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: [ { ... }, { ... } ], }, }, ... ]
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 })); }
La fonction groupAndMap prend quatre paramètres :
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"));
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!