无法创建对象数组

use*_*203 0 javascript arrays mapping

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

[ [{name: Alex, number: 2}, {name: Bill, number: 3}],  [{name: John, number: 5}, {name: Aston, number: 7}]]
Run Code Online (Sandbox Code Playgroud)

我想创建另一个数组,其中包含上述数组数组的所有对象,如下所示:

[{name: Alex, number: 2}, {name: Bill, number: 3}, {name: John, number: 5}, {name: Aston, number: 7}] 
Run Code Online (Sandbox Code Playgroud)

我写了下面的代码:

const productsInfoArray = [];
const productsRecords = customerContacts.map(i => i.products).map(product => {
  product.map(i => productsInfoArray.push(i));
  return productsInfoArray;
});
Run Code Online (Sandbox Code Playgroud)

但是当我console.log(productsRecords)返回一个包含所有信息的数组数组时.问题是此数组包含所需数组的12倍,因为customerContacts长度为12

Ori*_*ori 5

您可以通过扩展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)
Run Code Online (Sandbox Code Playgroud)

或者通过使用Array.reduce()和连接非常大的数组,因为传播不是堆栈安全的:

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)
Run Code Online (Sandbox Code Playgroud)