从一个字符串数组开始,其中一些字符串具有回车符:
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"];
有什么建议吗?
答案 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#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
方法的帮助下使用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)