基于另一个对象更新JSON格式的JavaScript对象

基于另一个对象更新JSON格式的JavaScript对象,javascript,jquery,json,angularjs,Javascript,Jquery,Json,Angularjs,具有两个JSON格式的js对象: obj1 = { prop1: 1, prop2: 2, prop3: 3 } obj2 = { prop1: 1, prop2: 3 } 将obj2更新为obj1的最佳做法是什么,这也会删除属性?通常在jQuery/angular上下文中。导致: obj1 = { prop1: 1, // not updated, nor overwritten prop2: 3 // up

具有两个JSON格式的js对象:

obj1 = { prop1: 1,
         prop2: 2,
         prop3: 3 }

obj2 = { prop1: 1,
         prop2: 3 }
将obj2更新为obj1的最佳做法是什么,这也会删除属性?通常在jQuery/angular上下文中。导致:

obj1 = { prop1: 1,   // not updated, nor overwritten
         prop2: 3    // updated
       }             // prop3 removed

还必须处理嵌套对象和数组。

比较可以使用的对象(obj1、obj2)。 对于合并,您可以进行检查,但不会删除缺少的元素。

尝试以下操作:

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;
}
如果要将object2的内容复制(或克隆,包括数组/子对象)到object1中,请尝试使用jquery


如果要从obj1中删除obj2中不存在的特性。然后你总是以obj2结束。我的意思是,不管obj1拥有什么,生成的json将始终是obj2。您能提供一个更好的例子吗?我一直在研究jquery和angular的扩展函数,但它们并没有删除删除的属性。@CyrilCherian试图说的是,您试图做的事情听起来不合逻辑,因为您实际上可以键入:
obj1=obj2Please find jsfiddle [here][2]