我有一个包含对象数组的数组。这是一个例子:
[ [{name: Alex, number: 2}, {name: Bill, number: 3}], [{name: John, number: 5}, {name: Aston, number: 7}]]
我想创建另一个数组,其中包含上述数组数组的所有对象,如下所示:
[{name: Alex, number: 2}, {name: Bill, number: 3}, {name: John, number: 5}, {name: Aston, number: 7}]
我编写了以下代码:
const productsInfoArray = [];
const productsRecords = customerContacts.map(i => i.products).map(product => {
product.map(i => productsInfoArray.push(i));
return productsInfoArray;
});
但是当我 console.log(productsRecords)
返回一个包含所有信息的数组数组。问题是该数组包含所需数组的 12 倍,因为 customerContacts 长度为 12
最佳答案
您可以通过 spreading 展平数组进入Array.concat()
:
const data = [ [{name: 'Alex', number: 2}, {name: 'Bill', number: 3}], [{name: 'John', number: 5}, {name: 'Aston', number: 7}]]
const productsRecords = [].concat(...data)
console.log(productsRecords)
或者使用Array.reduce()
,以及 concat 对于非常大的数组,因为展开不是堆栈安全的:
const data = [ [{name: 'Alex', number: 2}, {name: 'Bill', number: 3}], [{name: 'John', number: 5}, {name: 'Aston', number: 7}]]
const productsRecords = data.reduce((r, a) => r.concat(a), [])
console.log(productsRecords)
关于javascript - 无法创建对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48618114/