Heim >Web-Frontend >js-Tutorial >Wie kann ich mit Lodash ein Array von Objekten effizient nach verschachtelten Schlüsseln gruppieren?

Wie kann ich mit Lodash ein Array von Objekten effizient nach verschachtelten Schlüsseln gruppieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-07 06:13:12498Durchsuche

How Can I Efficiently Group an Array of Objects by Nested Keys Using Lodash?

Gruppieren eines Arrays von Objekten durch Verschachteln von Schlüsseln mit bestimmten Namen

Diese Abfrage versucht, ein Array von Objekten zu ändern, indem sie nach bestimmten Namen gruppiert werden Schlüsselnamen, die eine gewünschte Ausgabe mit verschachtelten Objekten liefern.

Um dies zu erreichen, wird eine benutzerdefinierte Funktion namens groupAndMap verwendet. Es verwendet eine Kombination aus _.map und _.groupBy aus der Lodash-Bibliothek. Hier ist eine Aufschlüsselung der Funktionsweise:

function groupAndMap(items, itemKey, childKey, predic){
    return _.map(_.groupBy(items,itemKey), (obj,key) => ({
        [itemKey]: key,
        [childKey]: (predic && predic(obj)) || obj
    }));
}
  • Die Funktion benötigt vier Parameter: items (das zu gruppierende Array), itemKey (der Schlüssel, nach dem gruppiert werden soll), childKey (der Eigenschaftsname des verschachteltes Objekt) und predic (eine optionale Prädikatfunktion, die zum Ändern der verschachtelten Objekte verwendet werden kann).
  • Es wendet _.groupBy mithilfe des itemKey auf das Array items an und gruppiert die Objekte in Arrays basierend auf ihrem itemKey.
  • Mit _.map wird jedes Objekt im gruppierten Array in ein neues Objekt mit zwei Eigenschaften konvertiert: [itemKey] und [childKey].
  • Der prädikative Parameter , sofern vorhanden, ermöglicht eine weitere Anpassung der verschachtelten Objekte. Sie wird auf das Objektarray für jeden itemKey angewendet, bevor sie der Eigenschaft [childKey] zugewiesen wird.

Um die gewünschte verschachtelte Ausgabe zu erstellen, wird die Funktion im Codeausschnitt zweimal verwendet:

var result = groupAndMap(items,"tab","sections", 
                   arr => groupAndMap(arr,"section", "items"));

Der erste Aufruf gruppiert die Objekte nach der „Tab“-Taste, wodurch ein Array von Objekten mit den Eigenschaften „Tab“ und „Abschnitte“ entsteht. Der zweite Aufruf gruppiert dann die Objekte innerhalb jedes Abschnitts nach der Taste „Abschnitt“ und liefert die gewünschte verschachtelte Ausgabe, bei der Objekte nach „Tab“ und dann nach „Abschnitt“ gruppiert werden.

Das obige ist der detaillierte Inhalt vonWie kann ich mit Lodash ein Array von Objekten effizient nach verschachtelten Schlüsseln gruppieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn