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

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-07 06:13:12512parcourir

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

Regroupement d'un tableau d'objets par imbrication de clés avec des noms spécifiques

Cette requête cherche à modifier un tableau d'objets en les regroupant en fonction de critères spécifiques noms de clés, produisant une sortie souhaitée avec des objets imbriqués.

Pour ce faire, une fonction personnalisée appelée groupAndMap est utilisée. Il utilise une combinaison de _.map et _.groupBy de la bibliothèque Lodash. Voici un aperçu de son fonctionnement :

function groupAndMap(items, itemKey, childKey, predic){
    return _.map(_.groupBy(items,itemKey), (obj,key) => ({
        [itemKey]: key,
        [childKey]: (predic && predic(obj)) || obj
    }));
}
  • La fonction prend quatre paramètres : items (le tableau à regrouper), itemKey (la clé à regrouper), childKey (le nom de la propriété du objet imbriqué) et predic (une fonction de prédicat facultative qui peut être utilisée pour modifier les objets imbriqués).
  • Il applique _.groupBy au tableau items à l'aide de itemKey, regroupant les objets en tableaux en fonction de leur itemKey.
  • À l'aide de _.map, chaque objet du tableau groupé est converti en un nouvel objet avec deux propriétés : [itemKey] et [childKey].
  • Le prédic Le paramètre, s’il est fourni, permet une personnalisation plus poussée des objets imbriqués. Il est appliqué au tableau d'objets pour chaque itemKey avant de l'attribuer à la propriété [childKey].

Pour créer la sortie imbriquée souhaitée, la fonction est utilisée deux fois dans l'extrait de code :

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

Le premier appel regroupe les objets par la touche "tab", résultant en un tableau d'objets avec les propriétés "tab" et "sections". L'appel zweite regroupe ensuite les objets dans chaque section par la touche "section", produisant la sortie imbriquée souhaitée où les objets sont regroupés par "onglet" puis par "section".

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!

Déclaration:
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