Tri d'un tableau JavaScript basé sur un autre tableau
En JavaScript, le tri des tableaux est une opération courante. Cependant, il existe des scénarios dans lesquels vous souhaiterez peut-être trier un tableau en fonction d'un autre tableau. Cela peut être difficile, surtout lorsque vous ne disposez pas d'identifiants uniques pour lier les éléments.
Énoncé du problème :
Imaginez que vous ayez deux tableaux :
itemsArray : Un tableau de paires [name, groupName], par exemple :
[ ['Anne', 'a'], ['Bob', 'b'], ['Henry', 'b'], ['Andrew', 'd'], ['Jason', 'c'], ['Thomas', 'b'] ]
sortingArr: Un tableau trié de noms de groupes, par exemple :
['b', 'c', 'b', 'b', 'a', 'd']
Le la tâche consiste à réorganiser itemsArray pour qu'il corresponde à la disposition de sortingArr. Cela signifie que les éléments appartenant au même groupe doivent être adjacents et classés selon l'ordre dans sortingArr.
Solution :
Pour résoudre ce problème, nous pouvons utiliser une fonction de tri qui compare les éléments en fonction de l'index de leur groupe dans sortingArr :
itemsArray.sort(function(a, b){ return sortingArr.indexOf(a) - sortingArr.indexOf(b); });
Cette fonction calcule la différence entre les indices des éléments dans triArr. Une différence positive indique que l'élément a doit être placé après l'élément b, tandis qu'une différence négative indique le contraire.
Solution en une ligne :
Alternativement, vous pouvez écrire la fonction de tri utilisant la syntaxe des flèches, ce qui donne un résultat plus concis solution :
itemsArray.sort((a, b) => sortingArr.indexOf(a) - sortingArr.indexOf(b));
Sortie :
Après le tri, le itemsArray ressemblera à ceci :
[ ['Bob', 'b'], ['Jason', 'c'], ['Henry', 'b'], ['Thomas', 'b'], ['Anne', 'a'], ['Andrew', 'd'], ]
Comme vous pouvez le voir, le les éléments du itemsArray ont été réorganisés et triés pour correspondre à l'ordre dans sortingArr.
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!