我有两个对象(有些可能称为字典),如下所示:
object1 =
{
id123:
{
name: Copenhagen,
type: 'city'
}
}
object2 =
{
id123:
{
name: Copenhagen,
type: 'county',
props: { id1: true, id: false}
},
id1234:
{
name: Pars,
type: 'county',
props: { id1: true, id: false}
},
id12345:
{
name: London,
type: 'county',
props: { id1: true, id: false}
},
}
如果两个id相同,那么我合并的对象需要采用object1的类型,并且需要保持对象object2的属性,就像这样(注意哥本哈根):
mergedObjects =
{
id123:
{
name: Copenhagen,
type: 'city',
props: { id1: true, id: false}
},
id1234:
{
name: Pars,
type: 'county',
props: { id1: true, id: false}
},
id12345:
{
name: London,
type: 'county',
props: { id1: true, id: false}
},
}
我已尝试使用传播算子进行以下操作:
mergedObjects = { ...object2, ...object1 }
但是整个id对象将被替换,而不是合并。你能帮忙吗?
答案 0 :(得分:0)
通过object2键,添加要合并的值,并从object1更新type
(如果它们使用Object2的类型)。
const object1 = {
id123: {
name: 'Copenhagen',
type: "city"
}
};
const object2 = {
id123: {
name: 'Copenhagen',
type: "county",
props: { id1: true, id: false }
},
id1234: {
name: 'Pars',
type: "county",
props: { id1: true, id: false }
},
id12345: {
name: 'London',
type: "county",
props: { id1: true, id: false }
}
};
const merged = {};
Object.keys(object2).forEach(key => {
merged[key] = { ...object2[key], type: object1[key] ? object1[key].type : object2[key].type };
});
console.log(merged);