我必须多次调用端点并将响应聚合到单个数组中。以下是端点的响应;
{
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}
]
这样做的最佳方法是什么?
答案 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 ];
},[]);