我可能误解了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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。