有两个JSON格式的js-objects:
obj1 = { prop1: 1,
prop2: 2,
prop3: 3 }
obj2 = { prop1: 1,
prop2: 3 }
将obj2更新为obj1的最佳js实践是什么,这也删除了属性?通常在jQuery / angular上下文中。导致:
obj1 = { prop1: 1, // not updated, nor overwritten
prop2: 3 // updated
} // prop3 removed
还必须处理嵌套对象和数组。
答案 0 :(得分:1)
要比较对象,可以使用angular.equals(obj1,obj2)。 对于合并,您可以检查angular.extend,但不会删除缺少的元素。
答案 1 :(得分:1)
试试这个:
function merge_objects(obj1,obj2){
for (var attr in obj2) { obj1[attr] = obj2[attr]; }
for (var attr in obj1) { if(!obj2[attr]){ delete obj1[attr]} }
return obj1;
}
答案 2 :(得分:0)
如果要将object2的内容(或克隆包括数组/子对象)复制到object1,请尝试使用jquery extend()
Please find jsfiddle [here][2]