我有以下2個JavaScript對象:合併嵌套的對象,而變異
let o1 = {
entities: {
1: {
text: "fooo",
nested: {
ids: [1, 2, 3],
flag: true
}
}
}
};
let o2 = {
ids: [4, 5, 6]
}
我想將它們合併沒有變異他們,得到它看起來像這樣的對象:
let o3 = {
entities: {
1: {
text: "fooo",
nested: {
ids: [1, 2, 3, 4, 5, 6],
flag: true
}
}
}
};
有可能是entities
,但只有entityId
定義的那個應該受到影響。 我試了一下:
let entityId = 1;
let o3 = Object.assign({}, o1, {
entities: Object.assign({}, o1.entities, {
[entityId]: Object.assign({}, o1.entities[entityId].nested,
{ ids: [...o1.entities[entityId].nested.ids, ...o2.ids] }
)
})
});
的問題是,text: "fooo",nested:
完全消失。
我的意思是對的嗎?這個代碼是否可以優化?
*「得到一個看起來像這樣的對象:」* - 您忘記包含示例輸出。你是否在拍攝與「o1」相同的結構,但添加了額外的ID到陣列中? – nnnnnn
對不起,我改變了。是extactly – Daskus
您的示例輸入具有'entities'(複數)屬性,但只有單個'1'屬性。真正的數據是否有「2」,「3」等,如果是的話,那麼應該把「o2」中的id與哪一個合併? – nnnnnn