javascript - 无法创建对象数组

标签 javascript arrays mapping

我有一个包含对象数组的数组。这是一个例子:

[ [{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/

相关文章:

javascript - 显示表内的文件列表

arrays - 使用转置函数将数组粘贴到范围中

带有十进制索引的 JavaScript 数组

java - 生成的查询中的 Hibernate SQL 错误(可能是映射错误)

javascript - 在倒计时器javascript中显示小时

javascript - IE和其他浏览器的图像质量差异

javascript - 如何在 asp.net web 应用程序中使用 razor 制作侧导航栏

C union 数组未被修改

java - JPA:@PrimaryKeyJoinColumn(...) 与@JoinColumn(..., insertable = ?, updatable = ?) 一样吗?

json - 映射json数据/对象抖动