javascript – Object.assign删除现有属性

前端之家收集整理的这篇文章主要介绍了javascript – Object.assign删除现有属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我可能误解了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”:“listen”,“app”:{“version”:“1.3.1.91”,“latest_version”:“1.3.2.879”}}

我想这是因为它是一个嵌套对象?有没有让它自动更新嵌套对象(即没有指定哪些)没有任何库?

谢谢

解决方法

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

下面的代码管理您的案例,但如果您想使用更多嵌套对象,请以递归方式执行此操作

var o1 = { "status":"","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相关文章