【问题标题】:How to add a property from another object if it doesn't exist in the first object in JavaScript如果 JavaScript 中的第一个对象中不存在另一个对象的属性,如何添加该属性
【发布时间】:2017-06-11 03:02:53
【问题描述】:

我有两个对象,obj1 和 obj2。如果 obj2 有一个 obj1 没有的键,则该 obj2 键/值对被添加到 obj1。

例如:

obj1 = {
a:1,
b:2
}
obj2 = {
b:4,
c:3
}

c:3 将被放入 obj1。

这就是我的尝试,但我的大脑正被它打转。我根本无法修改第二个对象(不需要),如果它也存在于 obj2 中,我必须保留 obj1 中的值。

function extend(obj1, obj2) {
  
  function comparison(obj1,obj2){
      var object1keys = Object.keys(obj1)
      var object2keys = Object.keys(obj2)
      var flag = 0
      for(var i = 0; i<object2keys.length;i++){
          flag = 0
          for(var j = 0; j<object1keys.length;j++){
              if(object2keys[i] === object1keys[j]){
                  flag = 1
                  console.log(i,j)
                  break
              }
              if(flag = 0 && j == object1keys.length - 1){
                  obj1[i] = obj2[j]
              }
          }
      }
      return obj1
  }
 return obj1
}
编辑:这是一个独特的问题,因为看起来其他问题不涉及添加不存在的特定键:值对。

【问题讨论】:

标签: javascript javascript-objects


【解决方案1】:

这应该可行。

function extend(obj1, obj2) {
  Object.keys(obj2).forEach(function(key) {
    obj1[key] = obj2[key];
  })
  return obj1;
}

console.log(extend({
  a: 1,
  b: 2
}, {
  b: 3,
  c: 4
}))

【讨论】:

    【解决方案2】:

    使用Object.keys()Object.hasOwnProperty() 函数的简单解决方案:

    var obj1 = {a:1,b:2}, obj2 = {b:4,c:3};
    
    Object.keys(obj2).forEach(function(k) {
      if (!obj1.hasOwnProperty(k)) obj1[k] = obj2[k];
    });
    
    console.log(obj1);

    【讨论】:

    • 哇,谢谢,这比我想象的要简单得多。我当然是从那座鼹鼠山上造出了一座山
    猜你喜欢
    • 2011-01-26
    • 2016-09-14
    • 1970-01-01
    • 2016-07-18
    • 2017-07-28
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多