合并2个对象而不覆盖“false”值

时间:2017-11-09 16:28:40

标签: javascript jquery

我有两个对象
var obj1 = {a: 1, b: true, c: false};
var boj2 = {b: true, c: true, d: 1};

我希望有一个像这样的两个对象的联合:
{a: 1, b: true, c: false, d: 1};

我尝试过使用$.extend,但它覆盖了c,我获得了 {a: 1, b: true, c: true, d: 1};

一些建议?

3 个答案:

答案 0 :(得分:0)

您可以撤销订单

var obj1 = {a: 1, b: true, c: false}; 
var obj2 = {b: true, c: true, d: 1};
console.log($.extend(obj2,obj1));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 1 :(得分:0)

我已经整理了一个可能有助于解决问题的JSFiddle - 请参阅https://jsfiddle.net/fhjuL22s/1/

var obj1 = {a: 1, b: true, c: false, e: 0}; 
var obj2 = {b: true, c: true, d: 1, e: 1};

var result = {};

for (var prop in obj1){
    result[prop] = obj1[prop]
    ? (obj2.hasOwnProperty(prop) ? obj2[prop] : obj1[prop])
    : obj1[prop];
}

for (var prop in obj2) {
    if (!result.hasOwnProperty(prop))
    result[prop] = obj2[prop];
}

console.log(result)

答案 2 :(得分:0)

你尝试谷歌搜索吗?答案可以在herehere找到,具体取决于您的意愿:

  1. 创建一个新对象并将obj1和boj2合并到其中。您最终会得到一个新对象,因此当您需要修改第一个对象时,请不要使用此对象。示例可以在链接1中找到。
  2. 为此创建自己的方法。示例可以在链接2中找到。