组合多个对象的内容,这些对象具有相同的键,并将该键作为JavaScript中的属性



我想合并多个对象的内容,这些对象具有相同的键,并且该键作为JavaScript中的属性。

对象:

const cat1 = { med1: { a: 10, b: 12 }, med2: { c: 14, d: 16 } };
const cat2 = { med1: { e: 18, f: 20 }, med2: { g: 22, h: 24 } };
预期输出:

{
med1: { a: 10, b: 12, e: 18, f: 20 }, 
med2: { c: 14, d: 16, g: 22, h: 24 }
}

我尝试同时使用对象扩展和对象。分配不成功。对于对象扩展,由于对象没有迭代器,这将返回一个错误。对象。然而,由于要合并的两个对象具有相同的键,第二个对象将覆盖第一个对象。

您可以遍历对象键并从它们的聚合中创建新对象。

您可以使用ES6扩展运算符()),它允许我们快速地将现有数组或对象的全部或部分复制到另一个数组或对象中。

const cat1 = { med1: { a: 10, b: 12 }, med2: { c: 14, d: 16 } };
const cat2 = { med1: { e: 18, f: 20 }, med2: { g: 22, h: 24 } };
let resultObject = {};
Object.keys(cat1).map(key => { // iterate over the keys
resultObject = {
...resultObject,
[key]: {...cat1[key], ...cat2[key]} // merge two objects 
}
return;
});
console.log(resultObject);

用于用单级间接组合两个对象👇

const cat1 = { med1: { a: 10, b: 12 }, med2: { c: 14, d: 16 } }
const cat2 = { med1: { e: 18, f: 20 }, med2: { g: 22, h: 24 } }
const merge = (o1, o2) =>
Object.keys(o1)
.reduce((p, key) => 
(p[key] = { ...o1[key], ...o2[key] }, p), {})
console.log(merge(cat1, cat2))

最新更新