我有一个这样的数组:
arr = [ [[x,x],[x,x]], [[x,x],[x,x],[x,x]], [[x,x]] ]
我希望把它变成这样的数组:
arr = [ [x,x],[x,x] , [x,x],[x,x],[x,x], [x,x] ]
所以我试过这个:
for (var i=1; i< arr.length; i++){ arr[0].concat(arr[i]); }
但它不起作用。我如何“合并”这个中间级别的数组?
答案 0 :(得分:4)
使用ES6,您可以将spread syntax
与concat()
var arr = [ [['x','x'],['x','x']], [['x','x'],['x','x'],['x','x']], [['x','x']] ]
var merged = [].concat(...arr)
console.log(JSON.stringify(merged))
对于旧版本的ecmascript,可以使用concat()
和apply()
完成同样的操作。
var arr = [ [['x','x'],['x','x']], [['x','x'],['x','x'],['x','x']], [['x','x']] ]
var merged = [].concat.apply([], arr)
console.log(JSON.stringify(merged))
答案 1 :(得分:1)
array.concat()
不会更改您调用它的数组,而是返回 new 数组 - 您忽略的新数组。
您应该创建结果数组,然后将所有内容附加到该数组,而不是尝试修改arr
。
var arr = [ [['x','x'],['x','x']], [['x','x'],['x','x'],['x','x']], [['x','x']] ];
var new_arr = [];
for(var i = 0; i < arr.length; i++){
new_arr = new_arr.concat(arr[i]);
}