2016-08-04 5 views
1

Versuch hier in zwei Array zwei Arrays mit einigen simmilar Vorkommen zu fusionieren, was ich tatVermeiden gleiche Objekt in dem vorhandenen Winkelmodell

var json_dest = [ 
    { 
     "legID":"12121", 
    "message":212112 
    }, 
    { 
    "legID":"12122", 
    "message":212112 
    } 
]; 
var json_src = [ 
     { 
     "legID":"12121", 
    "message":212100 
    }, 
    { 
    "legID":"12123", 
    "message":212112 
    } 
]; 

console.log(angular.merge(json_dest, json_src)); 

der Ausgang ist:

[ 
    { 
    "legID":"12121", 
    "message":212100 
    }, 
    { 
    "legID":"12123", 
    "message":212112 
    } 
] 

es die Duplikate zusammen
aber ich vermisse die andere legID "12123"
ich muss wissen wie es kann effizient getan werden?
und auch warum ist es passiert?

Antwort

2

angular.merge nicht verwendet Arrays zu verschmelzen, aber das Zielobjekts mit enumerable Eigenschaften des Quellobjekts zu tief erstrecken:

Tief des dst Zielobjekt verläuft durch eigene enumerable Eigenschaften aus dem src Objekt Kopieren (s) zu dst. Sie können mehrere src-Objekte angeben. Wenn Sie Original-Objekte erhalten möchten, können Sie dies tun, indem ein leeres Objekt als Ziel vorbei: var object = angular.merge({}, object1, object2)Source

Wenn Sie nur die beiden Arrays zu einem kombinieren Sie nicht wollen, eine Winkel API müssen TU das. Verwenden Sie einfach Concat:

json_dest = json_dest.concat(json_src); 

Wenn Sie die Duplikate von einer bestimmten Eigenschaft entfernen möchten, zum Beispiel legID in Ihrem Fall, können Sie das tun, nachdem die Arrays kombiniert. Es gibt viele Ressourcen, wie man das macht. Siehe zum Beispiel die Frage: Remove duplicates from an array of objects in javascript

0

Syntax für merge ist

var object = angular.merge({}, obj1, obj2); 

es ist nur das zweite Element zeigt

Versuchen Sie es mit

console.log(angular.merge(dst, src1, src2)); 
+0

dies nicht funktioniert, wenn Sie bedeuten ' src1 = json_src' und 'src2 = json_dest' und dst ist eine neue Variable –

Verwandte Themen