2017-01-25 4 views
1

У меня есть два объекта, obj1 и obj2. Если obj2 имеет ключ, который не имеет obj1, эта пара ключей/значений obj2 добавляется в obj1.Как добавить свойство из другого объекта, если оно не существует в первом объекте в JavaScript

, например:

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

с: 3 будет введен в obj1.

Вот что у меня есть как попытка, но мой мозг бегает по кругу. Я не могу изменить второй объект вообще (не нужно), и я должен сохранить значение в obj1, если он также существует в obj2.

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 
 
}
Edit: Это уникальный вопрос, потому что он был похож на другой вопрос, не связаны с добавлением конкретного ключа: пары значений, не существует.

+1

Возможный дубликат [Объединить объекты JS без перезаписи] (http://stackoverflow.com/questions/7549574/merge-js-objects-without-overwriting) –

ответ

4

Простое решение с использованием 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);

+0

вау спасибо, что было намного проще, чем я думал. Я, конечно, сделал гору из этой мухи – Milos

+0

@MlowBunjay, приветствую вас – RomanPerekhrest

0

Это должно работать.

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 
 
}))

 Смежные вопросы

  • Нет связанных вопросов^_^