如何将多个数组聚合为一个数组

时间:2021-05-21 12:31:55

标签: javascript node.js arrays

我必须多次调用端点并将响应聚合到单个数组中。以下是端点的响应;

{
   items: [
      {key1: value},
      {key2: value}
   ]
}

下面是多次调用端点的代码;

const chunkedArray = getChunkedArray(largeArray);
const result = await Promise.all(
   chunkedArray.map(async (items) => {
      const response = await ....get(`http:/url/${items}`);
      return response.items;
   });
);

对于我得到的结果;

[
   [
      {key1: value},
      {key2: value}
   ],
   [
      {key3: value},
      {key4: value}
   ]
]

我想要的是一个聚合数组,如下所示;

[
   {key1: value},
   {key2: value},
   {key3: value},
   {key4: value}
]

这样做的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

尝试使用 Array.prototype.flat();

let arr1 = [
   [
      {key1: value},
      {key2: value}
   ],
   [
      {key3: value},
      {key4: value}
   ]
]

let arr2 = arr1.flat(); 
/* [
      {key1: value},
      {key2: value},
      {key3: value},
      {key4: value}
   ] */


如果你想在没有平面的情况下做到这一点,你也可以使用 reduce :

let promises = Promise.all(
   chunkedArray.map(async (items) => {
      const response = await ....get(`http:/url/${items}`);
      return response.items;
   });
);

const result =promises.reduce((cum,x) => {
let newArr = await x;
return [...cum,...newArr ];
},[]);