![](/img/trans.png)
[英]How to push one Javascript object into another Javascript object?
[英]How to "migrate" one object to another object in JavaScript?
給定兩個 object,命名為: ObjectA
和ObjectB
:
var ObjectA = {
config1: "5",
config2: "6",
config3: "7"
}
var ObjectB = {
config1: "1",
config2: "2",
config4: "3",
config5: "4"
}
如何從ObjectB
復制到ObjectA
以便ObjectA
具有與ObjectA
相同的屬性,同時保留ObjectB
中的屬性值並將ObjectB
that doesn't exist
於ObjectA
的值復制到ObjectA
?
預期結果:
ObjectA = {
config1: "5",
config2: "6",
config4: "3",
config5: "4"
}
config3
被刪除,因為它在ObjectB
中不存在,config4
和config5
被復制到ObjectA
因為那些在ObjectA
中不存在,config1
和config2 中的值在config2
中保持相同,因為這兩個ObjectA
都存在) 使用reduce
:
ObjectA = Object.keys(ObjectB).reduce(
(acc, key) => ({ ...acc, [key]: ObjectA[key] ?? ObjectB[key]}), {}
)
這將使用來自ObjectA
的鍵,從ObjectB
獲取值,當它們存在時(回退到ObjectB
),並用結果填充一個空的 object 。
可以使用減速機function來解決。
var ObjectA = { config1: "5", config2: "6", config3: "7" } var ObjectB = { config1: "1", config2: "2", config4: "3", config5: "4" } const res = Object.keys(ObjectB).reduce((prev, next) => { if(ObjectA[next]){ prev[next] = ObjectA[next]; } return prev; }, {...ObjectB}) console.log(res)
這是一個更老派的可能解決方案:這基本上是做什么的:
function mergeObject(oldObj: Object, newObj: Object) {
var copyOfOldObj = Object.assign({}, oldObj);
for (const key in copyOfOldObj) {
if (!newObj.hasOwnProperty(key)) {
delete copyOfOldObj[key];
}
}
for (const key in newObj) {
if (!copyOfOldObj.hasOwnProperty(key)) {
copyOfOldObj[key] = newObj[key];
}
}
return copyOfOldObj;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.