Javascript - 具有相同属性的两个对象的总和 [英] Javascript - Sum of two object with same properties

查看:187
本文介绍了Javascript - 具有相同属性的两个对象的总和的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有多个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,下面的函数可以获取你想要的任意数量的对象,并按键求和:



<预类= 片段码-JS郎-JS prettyprint-越权> 变种OBJ1 = {A:12,b:8,C:17}; VAR OBJ2 = {A:12, b:8,C:17}; VAR OBJ3 = {A:12,b:8,C:17};功能sumObjectsByKey(...的OBJ){返回objs.reduce((A,b)=> {对(令k in b){if(b.hasOwnProperty(k))a [k] =(a [k] || 0)+ b [k];}返回a;},{});} console.log (sumObjectsByKey(obj1,obj2,obj3));


I have multiple javascript object

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

And

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

I need to sum this two object by keys

Result :

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

Do you have any solutions in javascript ? I use Object.keys.map but it's too longer because i have like 100 elements in my object

Thanks for you help

解决方案

You can use reduce for that, below function takes as many objects as you want and sums them by key:

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 - 具有相同属性的两个对象的总和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆