拆分包含回车符的数组元素 return

Split array elements containing carriage return

从字符串数组开始,其中一些具有回车符 returns:

var valArray = ["Saab","Volvo","BMW\nHonda\nAudi","Mazda"];

我想做的是摆脱回车 return,将字符串分成与回车 returns +1:

一样多的元素
["Saab","Volvo","BMW","Honda","Audi","Mazda"];

我用 .split 得到了什么:

valArray.split("\n");
["Saab","Volvo",["BMW","Honda","Audi"],"Mazda"];

有什么建议吗?

拆分马车后将项目映射到数组 returns,然后通过应用 concat 来展平数组:

var valArray = ["Saab","Volvo","BMW\nHonda\nAudi","Mazda"];

var result = [].concat.apply([], valArray.map(function(item) {
  var items = item.split('\n');
  
  return items;
}));

console.log(result);

另一种没有循环的方法:

var valArray = ["Saab","Volvo","BMW\nHonda\nAudi","Mazda"];

var result = valArray.join(',').split('\n').join(',').split(',');

console.log(result);

如果你想更新现有的数组,那么使用 Array#splice, Array#concat 和简单的 while 循环做这样的事情。

var valArray = ["Saab", "Volvo", "BMW\nHonda\nAudi", "Mazda"];
var len = valArray.length;

while (len--) {
  [].splice.apply(valArray, [len, 1].concat(valArray[len].split('\n')))
}

console.log(valArray)


或者,如果您想要一个新数组,请使用 Array#push method with the help of Function#apply 方法。

var valArray = ["Saab", "Volvo", "BMW\nHonda\nAudi", "Mazda"];
var len = valArray.length,
  res = [];

while (len--) {
  [].push.apply(res, valArray[len].split('\n'))
}

console.log(res)