Problème :
Étant donné un tableau d'objets, la tâche est de réorganiser dans un format optimisé pour le rendu en créant des structures imbriquées basées sur une clé spécifique valeurs.
Exemple :
Tableau d'entrée :
[ { tab: 'Results', section: '2017', title: 'Full year Results', description: 'Something here', }, { tab: 'Results', section: '2017', title: 'Half year Results', description: 'Something here', }, { tab: 'Reports', section: 'Marketing', title: 'First Report', description: 'Something here', } ]
Sortie souhaitée :
[ { tab: 'Results', sections: [ { section: '2017', items: [ { 'item that belongs here' }, { ... } ] } ] }, { tab: 'Reports', sections: [ { section: 'Marketing', items: [ { ... }, { ... } ] } ] } ]
Solution :
Cette transformation peut être réalisée en utilisant une combinaison de 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 })); }
Pour imbriquer les données comme vous le souhaitez, appliquez groupAndMap de manière récursive.
const output = groupAndMap(items, "tab", "sections", arr => groupAndMap(arr, "section", "items") );
Cette solution atteint l'objectif de regrouper et d'imbriquer le tableau d'objets basé sur des valeurs clés spécifiques.
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!