2013-07-31 5 views
8

Ich versuche, zwei Objekte zusammenführen und überschreiben die Werte im Prozess.Verschmelzen Sie zwei Objekte und überschreiben Sie die Werte, wenn der Konflikt

Ist es möglich mit underscore Folgendes zu tun? (Ich bin gut mit nicht Unterstrich Ich will es nur einfach sein)

var obj1 = { 
    "hello":"xxx" 
    "win":"xxx" 
}; 

var obj2 = { 
    "hello":"zzz" 
}; 

var obj3 = merge(obj1, obj2); 

/* 

{ 
    "hello":"zzz", 
    "win":"xxx" 
} 

*/ 
+0

Sie können jQuery verwenden, wenn Sie wollen: http://api.jquery.com/jquery.extend/ – pmrotule

Antwort

13

Verwendung extend:

var obj3 = _.extend({}, obj1, obj2); 

Das erste Argument wird modifiziert, so dass, wenn Sie nicht wollen, obj1 oder obj2 nur in {} passieren ändern.

+0

Verdammt, aus irgendeinem Grund dachte ich, das würde nicht für mich arbeiten. – ThomasReggi

+1

in Vanille JS: const obj3 = Object.assign ({}, obj1, obj2); – Matthew

3

Dieses verschmilzt b in ein:

function merge(a, b) { 
    for(var idx in b) { 
     a[idx] = b[idx]; 
    } //done! 
} 

merge(a, b); //a is merged 

Oder auch:

Object.prototype.myMerge = function(b) { 
    for(var idx in b) { 
     this[idx] = b[idx]; 
    } //done! 
}; 

a.myMerge(b); //a is merged 

Dieser gibt ein verschmolzenes Objekt zurück:

function merge(a, b) { 
    var c = {}; 
    for(var idx in a) { 
     c[idx] = a[idx]; 
    } 
    for(var idx in b) { 
     c[idx] = b[idx]; 
    } 
    return c; 
} 

var c = merge(a, b); 
Verwandte Themen