Réécrivez le titre comme suit : Regroupez le tableau principal et ajoutez des champs et des sous-tableaux dans chaque groupe.
P粉190443691
2023-08-24 21:18:20
<p>J'ai un tableau lourd comme celui-ci : </p>
<pre class="brush:php;toolbar:false;">[
{Id : 1, Nom : "Rouge", nom de l'option : "Couleur"},
{Id : 2, Nom : 'Jaune', nom de l'option : 'Couleur'},
{Id : 3, Nom : "Bleu", nom de l'option : "Couleur"},
{Id : 4, Nom : "Vert", nom de l'option : "Couleur"},
{Id : 7, Nom : "Noir", nom de l'option : "Couleur"},
{Id : 8, Nom : 'S', nom de l'option : 'Taille'},
{Id : 11, Nom : 'M', nom de l'option : 'Taille'},
{Id : 12, Nom : 'L', nom de l'option : 'Taille'},
{Id : 13, Nom : 'XL', nom de l'option : 'Taille'},
{Id : 14, Nom : 'XXL', nom de l'option : 'Taille'}
]≪/pré>
<p>Je dois regrouper par <code>optionName</code> et avoir deux lignes dans le tableau principal, comme ceci : </p>
<pre class="brush:php;toolbar:false;">[
{
Nom : « Couleur »,
Données :[{Id : 1, Nom : 'Rouge'},
{Id : 2, Nom : 'Jaune'},
{Id : 3, Nom : 'Bleu'},
{Id : 4, Nom : 'Vert'},
{Id : 7, Nom : 'Noir'}]
}, {
Nom : 'Taille',
Données :[{Id : 8, Nom : 'S'},
{Id : 11, Nom : 'M'},
{Id : 12, Nom : 'L'},
{Id : 13, Nom : 'XL'},
{Id : 14, Nom : 'XXL'}]
}
]≪/pré>
<p>Comment l'implémenter en javascript ? </p>
Une solution ES6 utilisant l'objet Map :
Voici l'extrait de code que j'ai écrit pour cette situation. Vous pouvez ajouter cette fonction à tous les tableaux :
Vous pouvez l'utiliser comme ça. Vous transmettez simplement une fonction qui définit comment regrouper les données.
Violon de travail
Vous pouvez
{key: k, data: map[k]}
替换为{Name: k, Data: map[k]}
si besoin.Il s'agit également d'une version ES6 plus compacte du code ci-dessus :
Utilisez-le comme ceci :