Ich habe mehrere Javascript-Objekte, die ich rekursiv zusammenführen möchte. Die Objekte haben einige Zahleneigenschaften, die ich beim Zusammenführen addiere. Die Objekte haben auch einige Map Eigenschaften. Hier ist beispielsweise, wie mein Objekt in Entwicklerkonsole aussieht:Objekte zusammenführen, die verschachtelte Map-Objekte enthalten
byGender:Map
0:{"Male" => 9}
key:"Male"
value:9
1:{"Female" => 11}
key:"Female"
value:11
byType:Map
0:{"Teens" => Object}
key:"Teens"
value:Object
byGender:Map
0:{"Guys" => 7}
key:"Guys"
value:7
1:{"Girls" => 10}
key:"Girls"
value:10
total:17
1:{"Chaperones" => Object}
key:"Chaperones"
value:Object
byGender:Map
0:{"Ladies" => 1}
key:"Ladies"
value:1
1:{"Men" => 2}
key:"Men"
value:2
total:3
total:42
ich die Werte dieser Karte zusammenführen möchten Objekte, so dass alle Zahlen von passenden Tasten werden addiert.
Ich verwende _.mergeWith und seine Customizer-Funktion. Ich kann die einfachen Zahleneigenschaften erfolgreich zusammenführen, aber wie füge ich auch die Map-Objekte zusammen? Gerade jetzt ersetzt meine Customizer-Merger-Funktion nur das Map-Objekt, so dass das letzte gewinnt. Hier ist meine Customizer Funktion mit Ich verwende _.mergeWith
var merger = function (a, b) {
if (_.isNumber(a)) {
return a + b;
} else {
return _.mergeWith(a, b, merger);
}
};
Es ist schwierig, Antworten zu finden, bei der Suche, weil „Karte“ Stichwort nur Bündel von .map zieht() Ergebnisse, anstelle des Kartenobjekts.
Ich habe ein jsFiddle https://jsfiddle.net/assvfk2b/5/ für das, was erklärt Ihnen, aber ich bin nicht sicher, was Sie durch die Zusammenlegung der Karte Objekt bedeuten können Sie bitte bearbeiten Sag mir, was genau du brauchst. – Rahul
Ich habe die Geige aktualisiert, um die tatsächliche Datenstruktur anzuzeigen, mit der ich arbeite. Es nutzt das Map-Objekt in Javascript. – Rastographics