如何在Javascript中使用相同属性的数学运算合并两个对象

如何在Javascript中使用相同属性的数学运算合并两个对象,javascript,ecmascript-6,frontend,Javascript,Ecmascript 6,Frontend,例如,我有两个对象 const obj = { CRITICAL: 0, ERROR: 1, INFO: 0, WARNING: 0, }; const obj = { CRITICAL: 0, ERROR: 0, INFO: 0, WARNING: 1, }; 我想把它们组合成一个对象,每个属性的总和如下 { CRITICAL: 0, ERROR: 1, INFO: 0, WARNING: 1, };

例如,我有两个对象

const obj = {
  CRITICAL: 0,
  ERROR: 1,
  INFO: 0,
  WARNING: 0,
};

const obj = {
  CRITICAL: 0,
  ERROR: 0,
  INFO: 0,
  WARNING: 1,
};
我想把它们组合成一个对象,每个属性的总和如下

{
      CRITICAL: 0,
      ERROR: 1,
      INFO: 0,
      WARNING: 1,
    };
我想出的方法是

Object.keys(obj).reduce((prev,curr)=>{
  prev[curr] = obj[curr] + obj2[curr];
  return prev
},{});

然而,我认为有更好的方法来做到这一点。你们能给我一些其他的方法吗。

这和你们的版本没什么不同,但我觉得它稍微干净一点

它还确保生成的对象具有两个对象中的所有关键帧,并且当
obj2
缺少
obj
中的关键帧时,
obj2
值默认为0

const obj={
临界值:0,
错误:1,
信息:0,,
警告:0,
反对意见1:1
}
常数obj2={
临界值:0,
错误:0,
信息:0,,
警告:1,,
目标2:1
}
console.log(
Object.entries(obj).reduce(
(上一个[键,值]=>{
上一个[键]=值+(上一个[键]| 0)
返回上一个
},
{…obj2}//传播以避免变异obj2
)

)
什么构成“更好”?您当前的函数操作是干净、清晰和合理的。@zfrisch-Hi,我正在考虑使其更健壮。目前,这种方法仅在两个对象都具有确切数量的属性时有效。如果其中一个对象的属性少于另一个对象,会发生什么情况?