2016-04-05 5 views
0

Jedes Objekt in JSON hat eine eindeutige ID. Gibt es eine eingebaute Funktion, die zwei JSONs mit der Aktualisierung von Informationen durch ID zusammenführt?Gibt es eine Funktion, um zwei JSON-Datensätze mit alten Informationen zu verbinden? (Node.JS)

Beispiel JSON:

{ 
    "users": [ 
     { 
      "id": "test1", 
      "field1": "info1", 
      "field2": "info1" 
     }, 
     { 
      "id": "test2", 
      "field": "info1" 
     }, 
     { 
      "id": "test3", 
      "field": "info1" 
     } 
} 

Wenn diese Funktion gibt es nicht - ich werde meine eigene schreiben. Ich frage das, weil meine Funktion definitiv langsamer arbeitet.

+0

können Sie sie mit O (n + m) zusammenführen. –

+0

Sie können '_' dafür verwenden. Zuerst muss es 'var _ = require ('lodash'); 'und dann verwenden Sie es wie' var updatedObj = _.merge (obj1, obj2); ' –

+0

@SiddharthAjmera ich bekomme Ausnahme auf' _' – user3239600

Antwort

0

Sie können Lodash's merge method verwenden.

tun Zum einen npm install lodash

Dann lodash in Ihrem Modul var _ = require('lodash');

verwenden, erfordern Dann werden Sie in der Lage sein, zwei JSON Objekte zu verschmelzen. Hier ist ein Beispiel

var users = { 
    'data': [{ 'user': 'barney' }, { 'user': 'fred' }] 
}; 

var ages = { 
    'data': [{ 'age': 36 }, { 'age': 40 }] 
}; 

_.merge(users, ages); 
// → { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] } 

In Ihrem Fall:

var _ = require('lodash'); 
var obj1 = {"id": "test1", "field": "info1"}; 
var obj2 = {"id": "test1", "field": "info1222"}; 
var mergedObj = _.merge(obj1, obj2); 

Der Wert von mergedObj{"id": "test1", "field": "info1222"} sein würde, wie es den Wert des field die info1 mit info1222

Hoffnung war ersetzen würde, das hilft.

+0

Es tut mir leid, aber Sie haben mich falsch verstanden. Mit "id" meinte ich nicht die Sequenz des Objekts. In meinem Beispiel ist "id" ein Feld. – user3239600

+0

Ich habe verstanden, was du meinst. '_.merge' nimmt einfach zwei Objekte und fügt sie zusammen. Er ersetzt die Feldwerte des ersten Objekts durch die Feldwerte des zweiten Objekts. Und es ändert nicht die Felder und Werte, die in beiden Objekten identisch sind. Es fügt neue Feldwertpaare hinzu, wenn sie im zweiten Objekt vorhanden sind und nicht im ersten Objekt vorhanden sind. –

+0

Also für 'var obj1 = {" id ":" test1 "," Feld ":" info1 "}' und var obj2 = {"id": "test1", "Feld": "info1222"} '' var mergedObj = _.merge (obj1, obj2) 'würde" mergedObj "ergeben zu" {"id": "test1", "field": "info1222"} ' –

Verwandte Themen