Javascript 如何合并多个对象以添加其关键点?

Javascript 如何合并多个对象以添加其关键点?,javascript,Javascript,实现sumObjects函数,该函数接受无限数量的对象并返回一个组合所有输入对象的对象 注意事项: const obj = {}; sumObjects() === {} sumObjects(obj) === {} 所有对象属性将仅具有数值 如果对象关键点匹配,则会对相应关键点的值求和 函数总是返回一个对象 对象中的数字可以是正数或负数 可以使用rest运算符收集传递给一个数组中函数的参数 示例: const obj = {}; sumObjects() === {} sumObjects(

实现
sumObjects
函数,该函数接受无限数量的对象并返回一个组合所有输入对象的对象

注意事项:

const obj = {};
sumObjects() === {}
sumObjects(obj) === {}
所有对象属性将仅具有数值 如果对象关键点匹配,则会对相应关键点的值求和 函数总是返回一个对象 对象中的数字可以是正数或负数 可以使用rest运算符收集传递给一个数组中函数的参数

示例:

const obj = {};
sumObjects() === {}
sumObjects(obj) === {}

这是我的密码

function sumObjects(...params) {
  
  let C = Object.fromEntries(
    Object.keys(params[0])
        .concat(Object.keys(params[1]))
        .map(k => [k,
            (params[0][k] || 0) + (params[1][k])
        ])
  )

  return C
}
我不知道如何将所有这些对象添加到一个对象中。
底线是我需要合并所有对象,但我不知道如何做,我找不到任何东西。

您可以减少对象数组并迭代单个对象的条目

const
sumObjects=(…objects)=>objects.reduce((r,o)=>{
Object.entries(o.forEach([k,v])=>r[k]=(r[k]|0)+v);
返回r;
}, {}),
第一个={a:2,b:4},
第二个={a:2,b:10},
第三{d:-5};
console.log(sumObjects(第一个));//{a:2,b:4}
log(sumObjects(第一,第三));//{a:2,b:4,d:-5}
log(sumObjects(第一、第二、第三));//{a:4,b:14,d:-5}

.as console wrapper{max height:100%!important;top:0;}
您可以使用
迭代param对象。reduce
并为每个对象在
acc
中设置/更新其属性:

函数对象(…参数){
返回参数减少((附件,项目)=>{
Object.entries(item.forEach)([property,value])=>{
const prev=acc[属性];
acc[属性]=上一个?上一个+值:值;
});
返回acc;
}, {});
}
常数first={a:2,b:4};
常数秒={a:2,b:10};
常数三={d:-5};
log(sumObjects(第一个));
log(sumObjects(第一个、第三个));

log(sumObjects(第一、第二、第三)
看起来concat只是不删除重复项,所以重复项键会被处理两次。