gpt4 book ai didi

javascript - 如何将共享一个公共(public)键的两个对象的两个值合并在一起并返回它?

转载 作者:行者123 更新时间:2023-12-05 08:48:06 34 4
gpt4 key购买 nike

编写一个名为 mergeCounters 的函数,它接受两个所有值都是数字的对象,并返回一个包含两个对象总和的新对象。返回对象的顺序无关紧要,只要它包含正确的键和值即可!

function mergeCounters (object1, object2) {
var myObj = {};
for (key in obj1) {
for (key2 in obj2) {
var val = myObj[key + key2];
}
}
return myObj;
}

var obj1 = {a: 1, b:2, c:3};
var obj2 = {a: 3, b:6, c:7};
console.log(mergeCounters(obj1, obj2)); // {a:4, b:8, c:10}

var obj3 = {a: 1, c:3, d:5};
var obj4 = {a: 3, b:6, c:7, z:20};
console.log(mergeCounters(obj3, obj4)); // {a:4, b:6, c:10, d:5, z:20}

最佳答案

这里不需要嵌套循环,因为您可以使用键来索引/访问两个对象的值。自 object1可能具有比 object2 更多的属性反之亦然,您可以先合并来自 object1 的所有对象属性和 object2使用 spread syntax ... 合并为一个对象.合并对象后,您可以使用 for...in 迭代对象的键, 并从 object1 中获取 key 和 object2添加到新的结果对象。一个对象可能没有另一个键,因此您可以将该值默认为 0使用 || 0如果它不存在。

请看下面的例子:

function mergeCounters (object1, object2) {
const merged = {...object1, ...object2};
const result = {};
for(const key in merged) {
result[key] = (object1[key] || 0) + (object2[key] || 0);
}
return result;
}

var obj1 = {a: 1, b:2, c:3};
var obj2 = {a: 3, b:6, c:7};
console.log(mergeCounters(obj1, obj2)); // {a:4, b:8, c:10}

var obj3 = {a: 1, c:3, d:5};
var obj4 = {a: 3, b:6, c:7, z:20};
console.log(mergeCounters(obj3, obj4)); // {a:4, b:6, c:10, d:5, z:20}

关于javascript - 如何将共享一个公共(public)键的两个对象的两个值合并在一起并返回它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66453929/

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