从数组中获取所有单个单词

Get all single words from array

本文关键字:单个单 获取 数组      更新时间:2023-09-26

我正在尝试将一个数组的所有单词分离并推送到另一个数组中。

旧阵列:

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

预期的数组:

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

使用我的代码,我仍然得到用逗号分隔的 3 个数组:

var arr = ["black cat", "white dog", "grey mouse"];
var arr_new = [];
for (i = 0; i < arr.length; i++) {
   curr_val = arr[i].split(" ");
   arr_new.push(curr_val);
}

这是因为该方法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]);
   }
}

这就是我会这样做的:

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))

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]);
  }
}

这里有一个带有reduce和replace 方法的选项,

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)