如何解决如何合并具有重复键和值的两个对象
我有两个对象如下:
const a = {
'2021-1': 10,'2021-2': 8
}
const b = {
'2021-1': 10,'2020-3': 10,'2020-4': 15,'2020-5': 12,'2020-6': 4
}
我想合并两个对象并总结重复键的值。
预期结果是:
{
'2021-1': 20,'2021-2': 8,'2020-6': 4
}
解决方法
您可以对第二个对象的条目执行归约操作以求和每个键的值,使用第一个对象的副本作为初始值。
const a = {
'2021-1': 10,'2021-2': 8
}
const b = {
'2021-1': 10,'2020-3': 10,'2020-4': 15,'2020-5': 12,'2020-6': 4
}
const res = Object.entries(b).reduce((acc,[k,v])=>{
acc[k] = (acc[k] || 0) + v;
return acc;
},{...a});
console.log(res);
此实用程序函数合并两个对象并对冲突的键求和,包括对 a
或 b
唯一的所有值。
const mergeWithSum = (a,b) =>
[...Object.keys(a),...Object.keys(b)].reduce((combined,key) => {
combined[key] = (a[key] ?? 0) + (b[key] ?? 0);
return combined;
},{});
const a = {
'2021-1': 10,'2020-6': 4
}
console.log(mergeWithSum(a,b));
这是另一种解决方案
function mergeObj(obja,objb) {
const merged = {...obja};
for ([key,value] of Object.entries(objb)) {
if(merged.hasOwnProperty(key)) {
merged[key] = merged[key] + value
} else {
merged[key] = value
}
}
return merged
}
它使用一个简单的 for of 循环,来自 object.entries 并且我们解构包含键和值的数组
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。