2016-04-27 31 views
2

我想了解jquery的延伸的方法,具体根据API documentationjQuery的程度JSON数组参数替换

由$ .extend()进行的合并是不是默认递归;如果第一个对象的 属性本身就是一个对象或数组,则它将被第二个 或后续对象中的具有相同键的属性完全覆盖 。这些值不合并。

它说数组或对象属性不会合并,将被替换。在下面的示例参数是JSON数组,它正在合并而不是被取代。

var a = { 
    external : true, 
    parameter : [{name:'ip1'},{name:'ip2'},{name:'ip3'}] 

}; 
var b = { 
    data:'Sumeet', 
    parameter : [{name:'ip1'},{name:'ip2'}] 
}; 


$.extend(true,a,b); 

console.log(a); 

Output : 


{ 
    data: "Sumeet", 
    external: true, 
    parameter: [{ 
    name: "ip1" 
    }, { 
    name: "ip2" 
    }, { 
    name: "ip3" 
}] 
} 

的参数应该只有IP1和IP2

+0

http://james.padolsey.com/jquery/#v=1.11.2&fn=jQuery.extend – Rayon

+1

如果您刚读过两个句子:P –

回答

3

请注意,您的引文 “默认为”说:。文档后面还说:

但是,通过传递true作为第一个函数参数,对象将被递归合并。

全款:

通过$.extend()进行合并是不是默认递归;如果第一个对象的属性本身是对象或数组,则它将被第二个或后续对象中具有相同键的属性完全覆盖。这些值不合并。这可以通过检查香蕉的价值在下面的例子中看到。但是,通过传递true作为第一个函数参数,对象将被递归合并。