2016-03-01 124 views
3

我想分離並將一個數組的所有單詞推送到另一個數組中。獲取數組中的所有單詞

舊陣列:

["black cat", "white dog", "grey mouse"] 

預計數組:

["black"],["cat"],["white"],["dog"],["grey"],["mouse"] 

我的代碼我還是讓我的3列由逗號分隔:

​​
+0

你想'[ 「黑」],[ 「貓」],[ 「白」] ,[「狗」],[「灰色」],[「鼠標」]]或[[黑色],「貓」,「白色」,「狗」,「灰色」,「鼠標」]'? –

回答

3

這是因爲該方法split返回數組的話分裂與空間。解決方案是遍歷這個新的數組,而不是插入(推)在數組中。

var arr = ["black cat", "white dog", "grey mouse"]; 
var arr_new = []; 

for (i = 0; i < arr.length; i++) { 
    curr_val = arr[i].split(" "); 
    for(j=0; j<curr_val.length;j++){ 
     arr_new.push(curr_val[j]); 
    } 
} 
1

的jsfiddle:https://jsfiddle.net/6hLazr5w/1/

var newArray=[], 
    oldArray = ["black cat", "white dog", "grey mouse"]; 

for(item in oldArray) { 
    tmpArray = oldArray[item].split(' '); 
    for(tmp in tmpArray) { 
    newArray.push(tmpArray[tmp]); 
    } 
} 
2

這是我會怎麼做:

var oldArr = ["black cat", "white dog", "grey mouse"]; 
 

 
var newArr = oldArr 
 
    
 
    // this will turn each string into an Array of Arrays, like this: 
 
    // [["black", "cat"], ["white", "dog"], ["grey", "mouse"]] 
 
    .map(function(item) { 
 
    return item.split(" "); 
 
    }) 
 

 
    // then, flatten this Array of Arrays into a single-level Array. 
 
    // see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce#Flatten_an_array_of_arrays 
 
    .reduce(function(a, b) { 
 
    return a.concat(b); 
 
    }, []); 
 

 
document.writeln(JSON.stringify(newArr))

1

這裏與減少&替代方法的選擇,

var a = ["black cat", "white dog", "grey mouse"] 
 

 
var re = a.reduce((acc,x)=>{ 
 
    x.replace(/[a-zA-z]+/g,function(m){ 
 
    acc.push([m]) 
 
    }); 
 
    return acc; 
 

 

 
},[]) 
 

 
console.log(re)

相關問題