javascript - How to merge two objects with Math operation for the same properties in Javascript
问题描述
For example I have two objects
const obj = {
CRITICAL: 0,
ERROR: 1,
INFO: 0,
WARNING: 0,
};
const obj = {
CRITICAL: 0,
ERROR: 0,
INFO: 0,
WARNING: 1,
};
I want to combine them into one object with the sum of each properties like this
{
CRITICAL: 0,
ERROR: 1,
INFO: 0,
WARNING: 1,
};
The approach I came up with is
Object.keys(obj).reduce((prev,curr)=>{
prev[curr] = obj[curr] + obj2[curr];
return prev
},{});
However I think there are better ways of doing this. Can you guys give me some other approaches.
解决方案
这与您的版本没有太大不同,但我认为它稍微干净一些。
它还确保生成的对象具有来自两个对象的所有键,并且obj2
当obj2
缺少obj
.
const obj = {
CRITICAL: 0,
ERROR: 1,
INFO: 0,
WARNING: 0,
OBJECT1: 1
}
const obj2 = {
CRITICAL: 0,
ERROR: 0,
INFO: 0,
WARNING: 1,
OBJECT2: 1
}
console.log(
Object.entries(obj).reduce(
(prev, [key, value])=> {
prev[key] = value + (prev[key] || 0)
return prev
},
{ ...obj2 } // spread to avoid mutating obj2
)
)
说明:这里我已经将累加器 ( prev
) 初始化为obj2
. 这样,我们可以保证将所有属性obj2
保留在结果对象中(当obj
没有匹配的属性时,它们的值保持不变)。
我也默认为零obj2[key]
,以防找不到,保证所有属性obj
都将传递到结果对象(当obj2
没有匹配的属性时,它们的值不变)。
您可以通过检查值的类型以确保它们是数字来增加一些安全性,但我认为它是相当可靠的,否则。
推荐阅读
- fluent-ui - 如何在 Fluent UI React 的 NavItems 中使用本地 svg 文件
- android - Android 在定义的时间间隔内安排作业
- python - 如何在 json 模板中传递气流 ts_nodash
- string - 如何在 C# 中添加“ref”作为字符串名称
- python-3.x - 将 Torch Hub 的 SSD 推断图像保存在输出目录中
- android - Android 模拟器版本 30.5.4.0 mac os 问题
- python - 在 HS08TEST (Python 2.7.13) 上的问题代码上获取运行时错误 NZEC
- json - 如何使用条件过滤表中的行
- foreach - 任何地方的自动化-对于文件夹循环命令中的每个文件在 223 个计数器后停止,它也会停止整个模块
- backoffice - 更新父订单时更新 ExtendedMultireferenceEditor(Hybris SAP Commerce 后台)