2016-03-01 74 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)

相关问题