网上有很多方法,然而都是单独写成一个函数,看起来很复杂,又不准确。
利用jQuery的$.extend进行合并
A={"sdf":"sdf"};
B={"sdf":"sdfw"};
C={"sdfs":"sdfw"};
$.extend(B,A,C);
console.log(B)
如果ABC有共同的对象,后面的覆盖被前面的,经验证有效,在弘帝建站系统login/js/article.js应用。
/** json对象合并,也是支持Object合并的,在jqueryAPI里有说明
这里用这个方法:$.extend(),当合并json用
API: jQuery.extend([deep], target, object1, [objectN])
@ param deep:true/false(是否深度复制,是:target没有的属性也复制;否:target没有的属性不复制)
@ param target:待扩展对象(在这里用做多个json合并<待合并对象>,会直接作用于target)
如果不想target改变用一个空的对象做target就可以了
var A={name:"xiaoMing"};
var B={age:23};
var C={birthday:"2013-11-12"};
var empty={};
/* 1. A没有的属性也复制
$.extend(A,B,C);//相当于$.extend(true,A,B,C);
console.log(A);
//输出 Object {name: "xiaoMing", age: 23, birthday: "2013-11-12"} */
/* 2. A没有的属性将不会复制
$.extend(false,A,B,C);
console.log(A);
//输出 Object {name: "xiaoMing"} */
/* 3. 用空对象做target
$.extend(empty,A,B,C);
console.log(empty);
//输出 Object {name: "xiaoMing", age: 23, birthday: "2013-11-12"} */
|