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只是不删除重复项,所以重复项键会被处理两次。