Ich versuche, einige Mapping/Reduzierung auf einige Javascript-Objekt und scheitern kläglich.Karte Reduzieren über Javascript Array von Objekten mit schlechter Leistung
Die Daten, wie sie aus dem Backend kommt kommt in etwas wie folgt aussehen:
[
{table:"a1", data: {colA:1,colB:2,colC:3}},
{table:"a2", data: {colA:2,colB:3,colC:4}},
{table:"a3", data: {colA:3,colB:4,colC:5}}
]
Recharts die Daten in folgendem Format benötigt (die Quelldatenschlüssel als eindeutige „name“ Schlüssel für das Ergebnis machen
)[
{name: 'colA', a1: 1, a2: 2, a3: 3},
{name: 'colB', a1: 2, a2: 3, a3: 4},
{name: 'colC', a1: 3, a2: 4, a3: 5}
]
Meine aktuelle Lösung ist derzeit O(n^n)
, weil ich ein Ergebnisobjekt baue, und Schleifen über es jedes Mal. Ich benutze ECMA6/Babel sowie Lodash. Jede Anleitung würde sehr geschätzt werden! Vielen Dank!
Edit: Hier ist meine aktuelle Lösung
var dest = []
Lodash.forEach(source,(o) => {
var table = o.table;
Lodash.forEach(o.data, (p,q) => {
// See if the element is in the array
const index = Lodash.findIndex(dest,(a) => {return a.name === q});
if (index === -1) {
var obj = {};
obj[table] = Number(p);
obj.name = q;
dest.push(obj);
} else {
dest[index][table] = Number(p);
}
})
});
Was genau das Problem ist? Wenn Sie Leistung benötigen, verwenden Sie rohe "for". – estus
Können Sie Ihre aktuelle Lösung posten? – James
Bitte zeigen Sie uns Ihren aktuellen Code an. – Bergi