javascript - 如何求和两个对象的属性?

标签 javascript sum

我有多个 JavaScript 对象:

{
  a: 12,
  b: 8,
  c: 17
}

{
  a: 2,
  b: 4,
  c: 1
}

我需要通过键对这两个对象求和

结果:

{
  a: 14,
  b: 12,
  c: 18
}

你们有 JavaScript 解决方案吗? 我使用 Object.keys.map 但它太长了,因为我的对象中有大约 100 个元素。

最佳答案

你可以使用reduce来实现,下面的函数可以接受任意数量的对象并按键对它们求和:

var obj1 = {
  a: 12,
  b: 8,
  c: 17
};

var obj2 = {
  a: 12,
  b: 8,
  c: 17
};

var obj3 = {
  a: 12,
  b: 8,
  c: 17
};


function sumObjectsByKey(...objs) {
  return objs.reduce((a, b) => {
    for (let k in b) {
      if (b.hasOwnProperty(k))
        a[k] = (a[k] || 0) + b[k];
    }
    return a;
  }, {});
}

console.log(sumObjectsByKey(obj1, obj2, obj3));

关于javascript - 如何求和两个对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42488048/

相关文章:

javascript - 如何在 JavaScript 中获取一位数的随机数?

javascript - html存储safari隐身模式,angular2

mysql - 根据用户获取每行的总和

php - 内连接,选择 SUM 和Where

python - 同一元组中元素的总和

javascript - 属性与 var : what are the perfomance issues

javascript - 无法读取 multer 中未定义的属性 'toString'

javascript - 如何在 asp.net 中使用 JavaScript 只打印表数据元素?

mysql - 获取所有行的总和

javascript - For 循环中跨度值的总和(在 IE10 中工作)