Maison >interface Web >js tutoriel >Comment puis-je trier un tableau en fonction de l'ordre d'un autre tableau en JavaScript ?

Comment puis-je trier un tableau en fonction de l'ordre d'un autre tableau en JavaScript ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-23 01:18:11496parcourir

How Can I Sort One Array Based on the Order of Another Array in JavaScript?

Réorganisation des tableaux en fonction de valeurs auxiliaires

En JavaScript, il peut y avoir des scénarios dans lesquels vous devez trier un tableau en fonction de l'ordre spécifié par un autre tableau. Cela peut être particulièrement utile lorsque vous travaillez avec des structures de données où l'ordre des éléments est crucial.

Considérez l'exemple suivant :

itemsArray = [
    ['Anne', 'a'],
    ['Bob', 'b'],
    ['Henry', 'b'],
    ['Andrew', 'd'],
    ['Jason', 'c'],
    ['Thomas', 'b']
];
sortingArr = [ 'b', 'c', 'b', 'b', 'a', 'd' ];

Dans ce cas, l'objectif est de réorganiser les élémentsArray en correspondre à l’ordre du sortingArr. Malheureusement, il n'y a pas d'identifiants pour suivre les éléments, la priorité est donc de faire correspondre au plus près la commande.

Solution :

Pour y parvenir, vous pouvez exploitez la méthode sort() intégrée de JavaScript en conjonction avec une fonction de comparaison personnalisée. La fonction de comparaison compare deux éléments de itemsArray en fonction de leurs valeurs correspondantes dans sortingArr.

itemsArray.sort(function(a, b){  
  return sortingArr.indexOf(a) - sortingArr.indexOf(b);
});

Cette expression trie essentiellement itemsArray en fonction des indices correspondants de ses éléments dans sortingArr. En conséquence, le tableau réorganisé ressemblera à ce qui suit :

itemsArray = [
    ['Bob', 'b'],
    ['Jason', 'c'],
    ['Henry', 'b'],
    ['Thomas', 'b']
    ['Anne', 'a'],
    ['Andrew', 'd'],
];

Cette solution donne la priorité à l'ordre spécifié par sortingArr et génère le itemsArray dans l'arrangement 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!

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