Maison > interface Web > js tutoriel > Comment puis-je regrouper efficacement des objets imbriqués par clés personnalisées à l'aide de Lodash ?

Comment puis-je regrouper efficacement des objets imbriqués par clés personnalisées à l'aide de Lodash ?

Patricia Arquette
Libérer: 2024-12-08 07:12:12
original
983 Les gens l'ont consulté

How Can I Efficiently Group Nested Objects by Custom Keys Using Lodash?

Regroupement d'objets imbriqués par clés personnalisées

Pour faciliter le rendu, un tableau d'objets doit être transformé pour regrouper des objets avec des noms de clés spécifiques. L'objectif est de créer une sortie où les objets sont regroupés par ces clés désignées, comme vu ci-dessous :

const output = [
  {
    tab: 'Results',
    sections: [
      {
         section: '2017',
         items: [ { 'item that belongs here' }, { ... } ],
      },
  },
  {
    tab: 'Reports',
    sections: [
      {
         section: 'Marketing',
         items: [ { ... }, { ... } ],
      },
  },
...
]
Copier après la connexion

Approche de mise en œuvre

Cette transformation peut être réalisée par combinant les fonctions Lodash _.map et _.groupBy.

function groupAndMap(items, itemKey, childKey, predic){
    return _.map(_.groupBy(items,itemKey), (obj,key) => ({
        [itemKey]: key,
        [childKey]: (predic && predic(obj)) || obj
    }));
}
Copier après la connexion

La fonction groupAndMap prend quatre paramètres :

  • items : le tableau d'objets à regrouper.
  • itemKey : la clé pour regrouper les éléments.
  • childKey : la clé à utiliser pour les groupes imbriqués.
  • predic : un prédicat facultatif à appliquer aux groupes imbriqués. groups.

La fonction regroupe d'abord les éléments par itemKey en utilisant _.groupBy. Ensuite, il parcourt les objets groupés et crée un nouvel objet avec itemKey et childKey. Si le paramètre predic est fourni, il applique le prédicat aux groupes imbriqués.

Exemple d'utilisation

Pour utiliser cette fonction pour regrouper les objets donnés, appelez-la comme suit :

var result = groupAndMap(items,"tab","sections", 
                   arr => groupAndMap(arr,"section", "items"));
Copier après la connexion

Cela regroupera les éléments par les touches « onglet » et « section », ce qui donnera le résultat souhaité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal