gpt4 book ai didi

javascript - 数组传播合并对象数组

转载 作者:行者123 更新时间:2023-12-02 08:05:49 26 4
gpt4 key购买 nike

如何使用扩展语法合并对象数组?

我的数据 array 可以是任意长度,我需要将它们全部合并到 mergedResults

有什么想法吗?

   Promise.all(apiPromises).then(data => {
let mergedResults = []
data.forEach(function(element) {
const { events } = element;

mergedResults[...events]

console.log(mergedResults)
});
});

最佳答案

你不能在 [] 中添加一个 existing 数组,你只能创建一个新的数组(比如 concat 做):

mergedResults = [...mergedResults, ...events];

...如果修改现有数组是可以接受的(但在保留原始数组很重要的情况下很常见,例如在使用不可变对象(immutable对象)编程时)。

出于这个原因,您可以使用带有展开语法的push:

mergedResults.push(...events);

旁注:您可以在 forEach 参数列表中使用解构,而不是作为单独的语句:

Promise.all(apiPromises).then(data => {
let mergedResults = [];
data.forEach(({events}) => {
// -----------^^^^^^^^
mergedResults.push(...events);
});
// ...presumably do something with `mergedResults` here...
});

也许甚至会抛出 for-of:

Promise.all(apiPromises).then(data => {
let mergedResults = [];
for ({events} of data) {
mergedResults.push(...events);
}
// ...presumably do something with `mergedResults` here...
});

或者对于访问所有元素的所有数组操作,您可以将其硬塞进 reduce,但您不会从中得到任何东西,它只会让事情变得更复杂:

Promise.all(apiPromises).then(data => {
let mergedResults = data.reduce((results, {events}) => {
results.push(...events);
return results;
}, []);
// ...presumably do something with `mergedResults` here...
});

关于javascript - 数组传播合并对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51786651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com