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

时间:2015-06-05 10:10:21

标签: javascript jquery json angularjs

有两个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

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

3 个答案:

答案 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]