Zusammenführen von zwei json-Objekt basierend auf Taste Wert in javascript
Brauche ich zum Zusammenführen von zwei json-Objekt basierend auf key-value mit javascript.
Habe ich zwei verschiedene Variablen g und c -.
Bedingungen: Alle Werte zusammengeführt werden müssen.
var g = [ { id: 36, name: 'AAA', goal: 'yes' },
{ id: 40, name: 'BBB', goal: 'yes' },
{ id: 57, name: 'CCC', goal: 'yes' },
{ id: 4, name: 'DDD', goal: 'yes' },
{ id: 39, name: 'EEE', goal: 'yes' },
{ id: 37, name: 'FFF', goal: 'yes' },
{ id: 59, name: 'GGG', goal: 'yes' },
{ id: 50, name: 'III', goal: 'yes' },
{ id: 43, name: 'HHH', goal: 'yes' },
{ id: 35, name: 'JJJ', goal: 'yes' } ]
var c = [ { id: 36, name: 'AAA', circle: 'yes' },
{ id: 40, name: 'BBB', circle: 'yes' },
{ id: 57, name: 'CCC', circle: 'yes' },
{ id: 42, name: 'ZZZ', circle: 'yes' },
{ id: 4, name: 'DDD', circle: 'yes' },
{ id: 39, name: 'EEE', circle: 'yes' },
{ id: 37, name: 'FFF', circle: 'yes' },
{ id: 59, name: 'GGG', circle: 'yes' },
{ id: 43, name: 'HHH', circle: 'yes' },
{ id: 35, name: 'JJJ', circle: 'yes' },
{ id: 100, name: 'JJJ', circle: 'yes' } ]
Habe ich versucht den folgenden code ein: aber ich Zusammenführen, was haben dieselbe id in 'c' variable. aber ich muss Zusammenführen, vergleichen 'g' und 'c'.
var arrayList = [];
for(var i in g) {
var getid = g[i].id;
var getname = g[i].name;
var getgoal = g[i].goal;
for(var j in c){
var compareid = c[j].id;
if(getid == compareid){
var obj = {};
obj.id = getid;
obj.name = getname;
obj.goal = 'yes';
obj.circle = 'yes';
console.log(obj);
arrayList.push(obj);
}
}
}
console.log(arrayList);
Erwartete Ausgabe:
[ { id: 36, name: 'AAA', goal: 'yes',circle: 'yes' },
{ id: 40, name: 'BBB', goal: 'yes',circle: 'yes' },
{ id: 57, name: 'CCC', goal: 'yes',circle: 'yes' },
{ id: 4, name: 'DDD', goal: 'yes' ,circle: 'yes' },
{ id: 39, name: 'EEE', goal: 'yes' ,circle: 'yes' },
{ id: 37, name: 'FFF', goal: 'yes' ,circle: 'yes'},
{ id: 59, name: 'GGG', goal: 'yes' ,circle: 'yes'},
{ id: 50, name: 'III', goal: 'yes' ,circle: 'no'},
{ id: 43, name: 'HHH', goal: 'yes' ,circle: 'yes'},
{ id: 35, name: 'JJJ', goal: 'yes' ,circle: 'yes'} ,
{ id: 42, name: 'ZZZ', goal: 'no' , circle: 'yes' },
{ id: 100, name: 'JJJ',goal: 'no' , circle: 'yes' }]
- Was ist das problem dabei und was ist die Frage? So weit alles Euch erklärt habe, ist das, was Sie wollen ... nicht, was Sie getan haben, um zu versuchen, es zu tun
- sorry, ich vergaß zu hinzufügen mein code.
- Brauchen nur javascript, nicht jquery.
- was ist Ihre erwartete
result in this case
var g = [ { id: 36, name: 'AAA', goal: 'yes' },....]
var c = [ { id: 36, name: 'foo', circle: 'yes' },.....]
?? - was wird erwartet, wenn zwei Objekte haben die gleiche id, aber unterschiedliche Namen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vergessen Sie push -
obj
in der ersten Schleife in dem Fall die id existiert nicht inc
und Durchlaufenc
im Fall, dass eine oder mehrere id ' s für das Objekt existiert nicht ing
.var
keyword, getrennt durch ein Komma. Ich vereinfachte das, die ich entferntget*
Variablen und ich entfernte die Verwendung vonin_obj_c
mit der||
Kürzel (in diesem Fall: weisen Sie "Nein" zuobj.circle
wenn es leer ist)Verwenden undescore.js schreiben Sie eine Funktion wie diese:
JS:
HTML:
Versuchen Sie es hier.
Versuchen mit Hilfe von jquery. Versuchen Sie dies :
ODER mit einfachen javascript -
g
undc
?Könnte man es so machen,
Habe ich einige Kommentare Hinzugefügt, um zu erklären, was Los ist in den code.
Pseudo-code,