将两个对象合并为一个

时间:2012-01-31 11:44:47

标签: javascript jquery

在javascript中我想将两个对象合并为一个。我得到了

{
  test: false,
  test2: false
}

{
  test2: true
}

我尝试使用$.extend$.merge,但我得到的只是输出

{
  test2: true
}

如何获得这样的输出

{
  test: false,
  test2: true
}

编辑:其实我有嵌套对象。我需要的是将ab组合如下:

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

1 个答案:

答案 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