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

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

Barbara Streisand
Barbara Streisandoriginal
2024-12-19 18:49:10733parcourir

How to Sort a JavaScript Array Based on the Order of Another Array?

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!

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