首页 > 解决方案 > 添加对象数组javascript的值

问题描述

我有一个这样的对象数组:const array=[{a:1, b:1} , {a:2, b:3} ,{a:1, b:1}]

我想要一个像 results = [{a:4 , b:5}] 这样的数组,它是根据 key 来自对象数组的所有值的总和。

我尝试过这样的事情,但有时它会跳过数组中的第一个对象:

       array.reduce((acc, n) => {
          for (var prop in n) {
            if (acc.hasOwnProperty(prop)) acc[prop] += n[prop];
            else acc[prop] = 0;
          }
          return acc;
        }, {})

标签: javascriptarraysreactjsperformanceecmascript-6

解决方案


您需要acc在分配之前进行初始化,因此下面的小修改将起作用

 const array=[{a:1, b:1} , {a:2, b:3} ,{a:1, b:1}]
 const res = array.reduce((acc, n) => {
          for (var prop in n) {
          acc[prop] = acc[prop] || 0; // Need to initialize before assigning
            if (n.hasOwnProperty(prop)) {
                 acc[prop] += n[prop];
               } 
          }
          return acc;
        }, {})
console.log(res);


推荐阅读