我希望我的用户输入覆盖默认值,但如果数据不存在则默认填充空白。像这样:
var userInput={
name:"Pat",
color: "green"
}
var defaults={
name:"Trevor",
color: "blue",
state: "washington"
}
var finalObject=mergeObjects(userInput,defaults);
//Should produce:
{
name:"Pat",
color: "green",
state: "washington"
}
这种合并/覆盖是否可以与jQuery一起使用?我确实看到this question,但它适用于数组,并且不覆盖,就像我需要它一样。
有什么想法吗?
答案 0 :(得分:4)
jQuery的$.extend()
method可以解决问题:
var finalObject = $.extend({}, defaults, userInput);
请注意$.extend()
修改作为第一个参数传递的对象(并返回它),因此您可能希望传递一个空对象,以便defaults
和userInput
不会换衣服。您可以根据需要传递任意数量的对象,并且它们将按照提供的顺序合并到第一个对象中(因此defaults
会出现在userInput
之前,以获得所需的结果。)
答案 1 :(得分:1)
您想要jQuery.extend
,它明确用于合并两个或多个对象(参数的顺序与假设的mergeObjects
方法相反):
var finalObject = $.extend(defaults, userInput);
finalObject // Object {name: "Pat", color: "green", state: "washington"}