在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 } }
但我得到的实际结果会从嵌套的test3
对象中删除test2
。
答案 0 :(得分:9)
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