【发布时间】:2021-06-16 01:36:06
【问题描述】:
我正在尝试编写一个通过键合并两个对象的函数。这两个对象都有一个数字数组作为它们的值对,这是我要合并的数组。
这个函数的输入是
const obj1 = {
foo: [1, 2],
bar: [3],
baz: [4],
};
const obj2 = {
foo: [5],
baz: [6, 7],
};
输出应该是
{
foo: [1, 2, 5],
bar: [3],
baz: [4, 6, 7]
}
我尝试使用 concat 和 spread 运算符,但是我得到的答案是缺少第二个对象的 foo 中的“5”。另外,我注意到我目前的方法,如果键/值对只存在于 obj2 中,它不会被复制。有没有更好的方法来解决这个问题?这是我的代码,请帮忙!
function mergeByKey(obj1, obj2) {
let resultObj = {};
for (let key1 in obj1) {
for (let key2 in obj2) {
if (key1 === key2) {
resultObj[key1] = [...obj1[key1], ...obj2[key1]];
} else {
resultObj[key1] = obj1[key1];
}
}
}
return resultObj;
}
**Output from code**
{ foo: [ 1, 2 ], bar: [ 3 ], baz: [ 4, 6, 7 ] }
【问题讨论】:
标签: javascript arrays javascript-objects