js把两个json对象合并成一个对象

Javascript 对象(object)合并

需求:设有对象 o1 ,o2,需要得到对象 o3

var o1 = { a:'a' }, o2 = { b:'b' };
// 则
var o3 = { a:'a', b:'b' }

方法1:使用JQuery的extend方法

o3 = $.extend(o1, o2)  // 合并 o1 和 o2, 将结果返回给 o3. 注意: 此时,o1 == o3! 即 o1 被修改
// 或
o3 = $.extend({}, o1, o2) // 合并 o1 和 o2, 将结果返回给 o3. 注意: 此时,o1 != o3! 即 o1 没有被修改

方法2:用 Object.assign();  //ES6浅拷贝

var o1 = { a: 1 };
var o2 = { b: 2 };

var obj = Object.assign(o1, o2);
console.log(obj); // { a: 1, b: 2 }
console.log(o1);  // { a: 1, b: 2}, 注意目标对象自身也会改变。

方法3:遍历赋值法 

       代码逻辑:

           1.循环对象n中的每一个对应属性。

           2.确认对象n中存在该属性

           3.确认对象o中不存在该属性

var extend=function(o,n){
   for (var p in n){
        if(n.hasOwnProperty(p) && (!o.hasOwnProperty(p) ))
            o[p]=n[p];
    }
    return o;
 }; 
var o = extend({a:1},{b:2});
console.log(0); //{a:1,b:2}

推荐用方法三,原生js写法,兼容性最好。

发布者

cylyiou

cylyiou

分享前端知识

支付宝扫码打赏微信打赏

如果文章对您有帮助,不妨移至上方按钮小额赞助我一下,让我有动力继续写出高质量的教程。

发表评论

电子邮件地址不会被公开。