2014-09-22 50 views
2

您好我有下述數組元素分裂陣列元件以JavaScript分割功能

變種陣列= [ 「a.READ」, 「b.CREATE」]

我試圖根據「。」分割元素。使用JavaScript分裂法

下面

是我的代碼

var array1=new Array(); 
var array2 = new Array(); 

for (var i = 0; i < array .length; i++) { 
    array1.push(array [i].split(".")); 
} 
console.log("this is the array1 finish ----"+array1) 

該出把那我收到的

[["a","READ"],["b","CREATE"]] 

預期的輸出,我想是

array1 =["a","b"] 

array2=["READ","CREATE"] 

我卡在這裏任何解決方案,這是很有幫助

回答

0

您不向array2添加任何內容。請正確使用索引,象下面這樣:

var array1=new Array(); 
var array2 = new Array(); 

for (var i = 0; i < array .length; i++) { 
    array1.push(array [i].split(".")[0]); 
    array2.push(array [i].split(".")[1]); 
} 
+0

劈裂2次是不是一個好主意,我認爲 – sadrzadehsina 2014-09-22 05:56:29

5

您需要添加到數組2和使用這兩種元素在返回數組String.prototype.split回報 - 即0是左手側和1點的右側。

var array = ["a.READ", "b.CREATE"] 
var array1 = []; // better to define using [] instead of new Array(); 
var array2 = []; 

for (var i = 0; i < array.length; i++) { 
    var split = array[i].split("."); // just split once 
    array1.push(split[0]); // before the dot 
    array2.push(split[1]); // after the dot 
} 
console.log("array1", array1); 
console.log("array2", array2); 
+0

只是一個建議使用','在'console.log(「array1」,array1);'這將顯示對象 – Satpal 2014-09-22 05:54:33

+0

@Satpal不錯的提示謝謝。 – Adam 2014-09-22 05:55:33

0

你可以做這樣的事情

var array =["a.READ","b.CREATE"]; 
var arr1= [], arr2= []; 

array.forEach(function(item,index,arr){ 
    item.split('.').forEach(function(item,index,arr){ 
    if(index % 2 === 0){ 
     arr1.push(item); 
    }else{ 
     arr2.push(item); 
    } 
    });  
}); 

console.log(arr1); 
console.log(arr2); 

DEMO

-1

使用此:

for (var i = 0; i < array .length; i++) { 
    var parts = array[i].split('.'); 
    array1.push(parts[0]); 
    array2.push(parts[1]); 
} 
-1

你還沒有分配到任何數組2的值。你可以做如下所示。

var array1=[]; 
var array2 = []; 

for (var i = 0; i < array .length; i++) { 
    var arrayTemp=[]; 
    arrayTemp.push(array [i].split(".")); 
    array1.push(arrayTemp[0]);   
    array2.push(arrayTemp[1]); 
} 
0

我想這有點多餘,但是,分裂方法實際上返回和數組。雖然你的代碼關閉了,但你並沒有修改array2。考慮以下。

var array = [ "a.READ" , "b.CREATE" ] 
    , array1 = [] 
    , array2 = [] 
    // cache array length 
    , len = array.length; 

for (var i = 0; i < len; i++) { 
    // the split method returns a new array 
    // so we will cache the array 
    // push element 0 to array1 
    // push element 1 to array2 
    var newArr = array[ i ].split('.'); 
    array1.push(newArr[ 0 ]); 
    array2.push(newArr[ 1 ]); 
} 

console.log('array1: ', array1); 
console.log('array2: ', array2); 
0

我們將與通用transpose功能開始二維數組:

function transpose(arr1) {    // to transpose a 2d array 
    return arr1[0].map(     // take the first sub-array and map 
     function(_, i) {     // each element into 
      return arr1.map(   // an array which maps 
       function(col) {   // each subarray into 
        return col[i];  // the corresponding elt value 
       } 
      ); 
     } 
    ); 
} 

現在的解決方案只是

transpose(      // transpose the two-dimensional array 
    array.map(     // created by taking the array and mapping 
     function(e) {    // each element "a.READ" into 
      return e.split('.'); // an array created by splitting it on '.' 
     } 
    ) 
)