Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组扩展合并对象数组_Javascript_Arrays - Fatal编程技术网

Javascript 数组扩展合并对象数组

Javascript 数组扩展合并对象数组,javascript,arrays,Javascript,Arrays,如何使用扩展语法合并对象数组 我的数据array可以是任意长度,我需要将它们全部合并到mergedResults 有什么想法吗 Promise.all(apiPromises).then(data => { let mergedResults = [] data.forEach(function(element) { const { events } = element;

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

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

有什么想法吗

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

                    mergedResults[...events]

                    console.log(mergedResults)
                });
   });
你必须推动他们:

  mergedResults.push(...events);
如果您这样做:

  mergedResults[ something ]
这只是一个属性访问。

您不能添加到具有内部排列的现有数组中。[],您只能创建一个新数组(如
concat
所做的):

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

因此,您可以将
push
与扩展语法一起使用:

mergedResults.push(...events);

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

Promise.all(apiPromises).then(data => {
    let mergedResults = [];
    data.forEach(({events}) => {
    // -----------^^^^^^^^
        mergedResults.push(...events);
    });
    // ...presumably do something with `mergedResults` here...
});
甚至还可以加入,用于:

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...
});

这就是W的意思。:-)@克劳德:是的,当我加入时,我仍然关心我的隐私,但我现在放弃了…:)(你仍然需要谷歌搜索才能找到关于我的任何有意义的东西,所以…)你试图将数组中的每个对象合并到一个结果对象中?你能给出一个输入和期望输出的例子吗?
Promise.all(apiPromises).then(data => {
    let mergedResults = data.reduce((results, {events}) => {
        results.push(...events);
        return results;
    }, []);
    // ...presumably do something with `mergedResults` here...
});