编写一个称为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
为使用合并对象传播语法...
。拥有合并的对象后,可以使用迭代对象的键for...in
,并从两者中获取键object1
并object2
添加到新的结果对象中。一个对象可能没有另一个键,因此如果该值不存在,则可以将其默认设置为0
using || 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}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句