我有一个像这样的数组:
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]); }
但是它不起作用。我该如何“合并”这个中间级别的数组?
我有一个像这样的数组:
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]); }
使用ES6,您可以在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))
这正是Array.prototype.flat()
所做的。
var arr = [ [['x','x'],['x','x']], [['x','x'],['x','x'],['x','x']], [['x','x']] ]
var merged = arr.flat()
console.log(JSON.stringify(merged))
[["x","x"],["x","x"],["x","x"],["x","x"],["x","x"],["x","x"]]
array.concat()
方法不会改变你调用它的数组,而是返回一个新的数组——一个你正在忽略的新数组。
你应该创建一个 result 数组,然后将所有内容附加到其中,而不是尝试修改 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]);
}