let arr = [[{x: 1},{y: 2}],[{z: 3}]]
let objs = []
arr.forEach(innerArray => {
innerArray.forEach(obj => {
objs.push(obj)
})
})
console.log(objs) // [{x:1}, {y:2},{z:3}]
我不想两次映射数组, 您能帮我找到更好的方法吗?
答案 0 :(得分:7)
您可以使用Array.prototype.flat()
注意:以下所有方法都是替代方法,具有较高的速度。您的解决方案具有O(n)
时间复杂度,并且以下所有方法都具有相同的时间复杂度。合并两个数组的时间复杂度是O(n)
而不是O(1)
let arr = [[{x: 1},{y: 2}],[{z: 3}]]
let objs = arr.flat();
console.log(objs)
或者另一种方式是使用concat()
和reduce()
let arr = [[{x: 1},{y: 2}],[{z: 3}]]
let objs = arr.reduce((ac,a) => ac.concat(a),[])
console.log(objs)
在注释中建议的一个更好的主意是使用apply()
let arr = [[{x: 1},{y: 2}],[{z: 3}]]
let objs = [].concat.apply([], arr)
console.log(objs)