javascript - 将两个对象合二为一

标签 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 } }

但我得到的实际结果是从嵌套的 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/

相关文章:

javascript - 您如何通过单击链接转到网站的特定部分?

javascript - 显示 div onscroll 但永久隐藏 div onclick

javascript - 悬停在 ul 子元素上效果 ul after style

javascript - 使用jquery过滤后使图像正确隐藏

javascript - 具有多个不同模型类的 Feed backbone 集合

javascript - 在 `replace` 函数中转义 $$

javascript - 如果 DOM 元素获取 "removed",AngularJS Controller 就会被销毁?

javascript - 元素 slider 不工作

javascript - 使用 Javascript 将一个类中的所有图像替换为另一个图像

javascript - 浏览器上的连续语音识别,例如 "ok google"或 "hey siri"