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

3

从一个字符串数组开始,其中一些包含回车符:

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

我想做的是去掉回车符,将字符串分成与回车符数量相等加上 1 的元素:
["Saab","Volvo","BMW","Honda","Audi","Mazda"];

.split方法的返回值:

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

有任何建议吗?

2个回答

4

将文本通过换行符进行分割后,映射到数组中,然后通过应用 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);


尝试了一下,效果非常好。感谢帮助我这个简单的人! - Temperedsoul
不客气 :) 我添加了另一种没有循环的方法。 - Ori Drori

1

If you want to update the existing array then do something like this using Array#splice, Array#concat and simple while loop.

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方法,并借助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)


1
我正在尝试使用splice和concat创建更加时尚的循环。谢谢! :) - Temperedsoul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接