Gruppieren verschachtelter Objekte nach benutzerdefinierten Schlüsseln
Um das Rendern zu erleichtern, muss ein Array von Objekten umgewandelt werden, um Objekte mit bestimmten Schlüsselnamen zu gruppieren. Das Ziel besteht darin, eine Ausgabe zu erstellen, in der die Objekte nach diesen festgelegten Schlüsseln gruppiert sind, wie unten dargestellt:
const output = [ { tab: 'Results', sections: [ { section: '2017', items: [ { 'item that belongs here' }, { ... } ], }, }, { tab: 'Reports', sections: [ { section: 'Marketing', items: [ { ... }, { ... } ], }, }, ... ]
Implementierungsansatz
Diese Transformation kann erreicht werden durch Kombinieren der Lodash-Funktionen _.map und _.groupBy.
function groupAndMap(items, itemKey, childKey, predic){ return _.map(_.groupBy(items,itemKey), (obj,key) => ({ [itemKey]: key, [childKey]: (predic && predic(obj)) || obj })); }
Die Funktion „groupAndMap“ benötigt vier Parameter:
Die Funktion gruppiert zunächst die Elemente nach dem itemKey mithilfe von _.groupBy. Anschließend werden die gruppierten Objekte durchlaufen und ein neues Objekt mit itemKey und childKey erstellt. Wenn der Parameter „predic“ angegeben wird, wendet er das Prädikat auf die verschachtelten Gruppen an.
Beispielverwendung
Um diese Funktion zum Gruppieren der angegebenen Objekte zu verwenden, rufen Sie sie wie folgt auf :
var result = groupAndMap(items,"tab","sections", arr => groupAndMap(arr,"section", "items"));
Dadurch werden die Elemente nach den Tasten „Tab“ und „Abschnitt“ gruppiert, was zur gewünschten Ausgabe führt.
Das obige ist der detaillierte Inhalt vonWie kann ich mit Lodash verschachtelte Objekte effizient nach benutzerdefinierten Schlüsseln gruppieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!