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

时间:2016-11-04 11:26:07

标签: javascript arrays split elements carriage-return

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

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 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

如果要更新现有阵列,请使用Array#spliceArray#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方法的帮助下使用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)