2017-01-25 3 views
1

Ich habe zwei Objekte, obj1 und obj2. Wenn obj2 einen Schlüssel hat, den obj1 nicht hat, wird dieses obj2-Schlüssel/Wert-Paar zu obj1 hinzugefügt.So fügen Sie eine Eigenschaft aus einem anderen Objekt hinzu, wenn sie nicht im ersten Objekt in JavaScript vorhanden ist

zum Beispiel:

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

c: 3 stellen in obj1 würde.

Hier ist, was ich als Versuch habe, aber mein Gehirn wird dadurch im Kreis geführt. Ich kann das zweite Objekt überhaupt nicht ändern (muss nicht), und ich muss den Wert in obj1 behalten, wenn es auch in obj2 existiert.

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: Dies ist eine einzigartige Frage, weil es wie die andere Frage sah war nicht mit einem bestimmten Schlüssel hinzu: Wertepaar, das nicht existierte.

+1

Mögliche Duplikat [Merge JS Objekte ohne Überschreiben] (http://stackoverflow.com/questions/7549574/merge-js-objects-without-overwriting) –

Antwort

4

Einfache Lösung mit Object.keys() und Object.hasOwnProperty() Funktionen:

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

wow danke, dass war so viel einfacher als ich dachte. Ich habe mit Sicherheit einen Berg aus diesem Maulwurfshügel gemacht – Milos

+0

@MlowBunjay, gern geschehen – RomanPerekhrest

0

Das sollte funktionieren.

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

Verwandte Themen