在 javascript 中,我想将两个对象合二为一。我得到了
{
test: false,
test2: false
}
和
{
test2: true
}
我尝试使用 $.extend
、$.merge
但我得到的输出是
{
test2: true
}
如何得到这样的输出
{
test: false,
test2: true
}
编辑:实际上我有嵌套对象。我需要的是将 a
和 b
组合如下:
var a = { test: false, test2: { test3: false, test4: false } };
var b = { test2: { test4: true } };
// desired combined result:
{ test: false, test2: { test3: false, test4: true } }
但我得到的实际结果是从嵌套的 test2
对象中删除了 test3
。
最佳答案
var a = {
test: false,
test2: false
};
var b = {
test2: true
};
var c = $.extend(a, b);
这将覆盖对象 a
的所有属性,结果为:
{
test: false,
test2: true
}
如果你想要一个新的、新鲜的对象调用.extend
,像这样:
var c = $.extend({}, a, b);
这将完成相同的工作,但它保持对象 a
不变并创建一个新对象。参见 http://api.jquery.com/jQuery.extend/
更新
在您的评论中,您更新了对象结构。那么,你需要的是一个所谓的“深度克隆”。这只是 $.extend()
调用的另一个参数,如下所示:
var c = $.extend(true, a, b); // a gets overwritten
var c = $.extend(true, {}, a, b); // new object is created
关于javascript - 将两个对象合二为一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9078968/