gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 00:39:50 25 4
gpt4 key购买 nike

例如我有两个对象

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 默认为 0。当 obj2 时的值缺少 obj 中的 key .

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 没有匹配的属性时,它们的值保持不变)。

您可以通过检查值的类型以确保它们是数字来增加更多的安全性,但我认为它是相当可靠的,否则。

关于javascript - 如何在 Javascript 中使用数学运算合并两个具有相同属性的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53509051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com