gpt4 book ai didi

javascript - Object.assign 删除现有属性

转载 作者:数据小太阳 更新时间:2023-10-29 04:45:16 29 4
gpt4 key购买 nike

我可能误解了 Object.assign() 的工作原理,但我没想到它会删除现有属性,例如:

var o1 = { "status":"", "app":{"version":"1.3.1.91","latest_version":"1.3.1.91"} }
var o2 = { "status":"listening", "app":{"latest_version":"1.3.2.879"} }

console.log(Object.assign({}, o1, o2));

输出:{"status":"listening","app":{"latest_version":"1.3.2.879"}}

我期望的是:{"status":"listening", "app":{"version":"1.3.1.91", "latest_version":"1.3.2.879"}}

我猜是因为它是一个嵌套对象?有没有什么可以让它在没有任何库的情况下自动更新嵌套对象(即无需指定哪些对象)?

谢谢

最佳答案

Object.assign 无法管理嵌套对象。您必须遍历对象的属性。

下面的代码管理你的案例,但如果你想使用更多的嵌套对象,递归地执行这个过程

var o1 = { "status":"", "app":{"version":"1.3.1.91","latest_version":"1.3.1.91"} };
var o2 = { "status":"listening", "app":{"latest_version":"1.3.2.879"} };

var output = {};
Object.keys(o2).forEach(key => {
if (o2[key] instanceof Object) {
output[key] = Object.assign({}, o1[key], o2[key]);
} else {
output[key] = o2[key];
}
});

console.log(output);

关于javascript - Object.assign 删除现有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47791866/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com