2016-06-03 4 views
0

Ich habe und object1 mit einem unbekannten Schlüsselname und ich muss mit anderen Objekt2 zusammenführen. Der sichere Punkt ist, dass der unbekannte Schlüssel im Objekt2 nicht vorhanden ist, also werden niemals Schlüsselnamen Konflikte sein.Merge Javascript Objekt

var object1 = { 
id: 1, 
name: "myname", 
boleanSample : true 
} 


var object2 = { 
unknownKeyName : "UnknownValue" 
} 

Ich will in object1 verschmelzen object2 und bekommen dieses

var object1 = { 
id: 1, 
name: "myname", 
boleanSample : true, 
unknownKeyName = "UnknownValue" 
} 

Bitte, Vanille Javascript nur. Wenn die Antwort die Schaffung eines neuen Objekt3 benötigen, ist völlig in Ordnung :)

PD: Ich habe, bevor diese Links die Frage schreiben:

Nein überhaupt Vervielfältigung für diejenigen :)

+1

'für (var k in object2) object1 [k] = object2 [k];' ...? –

+0

Was lässt Sie glauben, dass die Funktion 'mergeObjectInto' aus [dieser Antwort] (http://stackoverflow.com/a/32239489/1048572) nur mit bekannten Schlüsseln funktioniert? – Bergi

Antwort

2

Verwenden Object.keys mit Array#forEach

var object1 = { 
 
    id: 1, 
 
    name: "myname", 
 
    boleanSample: true, 
 
}; 
 

 
var object2 = { 
 
    unknownKeyName: "UnknownValue" //correct typo here 
 
}; 
 
Object.keys(object2).forEach(function(key) { 
 
    object1[key] = object2[key]; 
 
}); 
 
console.log(object1);

+0

Ok Leute, vielen Dank, aber was kann ich jetzt tun? Niet der Dunkle Absolute kommentieren eine gültige Lösung, aber @ gurvinder372 und Rayon hat auch eine gültige Lösung gepostet. Vielleicht ein Update in beiden Richtungen? Und jemand weiß, welcher ist besser/schneller/Leistungsvorteil :)? –

+0

@ HectorLeón, Gurvinder war am schnellsten von allen..Go mit seinem Post :) – Rayon

0

Diese Merge-Funktion sollte es tun. Denken Sie daran, das Objekt hinzuzufügen, das Sie zuerst an zwei hängen möchten.

var object1 = { 
 
id: 1, 
 
name: "myname", 
 
boleanSample : true 
 
} 
 

 

 
var object2 = { 
 
unknownKeyName : "UnknownValue" 
 
} 
 

 
function mergeObjects(a,b){ 
 
    for(var bi in b) { 
 
    if(b.hasOwnProperty(bi)) { 
 
     if(typeof a[bi] === "undefined") { 
 
     a[bi] = b[bi]; 
 
     } 
 
    } 
 
    } 
 
} 
 
mergeObjects(object1,object2); 
 
console.log(object1);

+0

danke für Ihre schnelle Antwort, aber ich habe versucht und nicht funktioniert –

0

Schritt I: Schleife über die Eigenschaften.

Schritt II: versuchen und prüfen, ob Objekt

Schritt III: wenn true, Funktion auf obj [Prop] stimulieren und überprüfen, sonst nehmen nur überprüfen.

Schritt IV: Wenn ein Fehler aufgetreten ist obj [prop] = check;

Schritt V: return obj

/*functions*/ 
 
function objectConcat(o1, o2) { 
 
    for (var v in o2) { 
 
    try { 
 
     o1[v] = (o2[v].constructor == Object) ? objectConcat(o1[v], o2[v]) : o2[v]; 
 
    } catch (e) { 
 
     o1[v] = o2[v]; 
 
    } 
 
    } 
 
    return o1; 
 
} 
 

 
/*objects*/ 
 
var object1 = { 
 
    id: 1, 
 
    name: "myname", 
 
    boleanSample: true, 
 
} 
 

 
var object2 = { 
 
    unknownKeyName: "UnknownValue" /*mistake straighten*/ 
 
} 
 

 
/*code*/ 
 

 
console.log(objectConcat(object2, object1));