在 JavaScript/jQuery 中覆盖/合并两个对象

Overwrite/Merge two objects in JavaScript/jQuery

本文关键字:两个 对象 合并 JavaScript jQuery 覆盖      更新时间:2023-09-26

我希望我的用户输入覆盖默认值,但如果数据不存在,则让默认值填充空白。这样:

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吗?我确实看到了这个问题,但它适用于数组并且不会像我需要的那样覆盖。

有什么想法吗?

jQuery的$.extend()方法就可以了:

var finalObject = $.extend({}, defaults, userInput);

请注意,$.extend()修改作为第一个参数传递的对象(并返回它),因此您可能希望传递一个空对象,以便defaultsuserInput不会更改。您可以传递任意数量的对象,它们将按照提供的顺序合并到第一个对象中(因此defaultsuserInput之前获得所需的结果)。

您需要jQuery.extend,它明确用于合并两个或多个对象(参数的顺序与假设的mergeObjects方法相反):

var finalObject = $.extend(defaults, userInput);
finalObject // Object {name: "Pat", color: "green", state: "washington"}