我有一个产品列表,每个产品我都会通过api调用来获取产品订阅。
const subscriptions = await Promise.all(products.flatMap((p: any) => {
const { username, password } = p.credentials;
return GetSubscription(username, password);
}));
console.log(subscriptions);
实际:
[[ {}, {}, {},]]
现在您可以看到我在这里有一个双嵌套数组,并且我不需要外部数组,我该如何展平该数组,我假设在这里使用flatMap可能对我有帮助,但是却没有。
预期:
[ {}, {}, {},]
当然,我可以简单地做subscriptions[0]
,但我会尽量避免这种情况。
答案 0 :(得分:1)
使用点差运算符
async function func() {
return 'A';
}
(async() => {
const [...ret] = await Promise.all([
func(),
func(),
func(),
]);
console.log(ret);
})();
或
async function func() {
return 'A';
}
(async() => {
const ret = await Promise.all([
func(),
func(),
func(),
]);
console.log(ret.reduce((tmp, x) => [...tmp, x], []));
})();
正如您在评论中所说,在tsconfig中指定ES2019,您可以使用Array.flat
:
async function func() {
return 'A';
}
(async() => {
const ret = await Promise.all([
func(),
func(),
func(),
]);
console.log(ret.flat());
})();
答案 1 :(得分:0)
这应该对您有帮助。
const input = [[{}, {}, {}], [{"hi": "bye"}]];
console.log(input.flat());