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
Libérer: 2024-12-19 18:49:10
original
696 Les gens l'ont consulté

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']
    ]
    Copier après la connexion
  • sortingArr: Un tableau trié de noms de groupes, par exemple :

    ['b', 'c', 'b', 'b', 'a', 'd']
    Copier après la connexion

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);
});
Copier après la connexion

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));
Copier après la connexion

Sortie :

Après le tri, le itemsArray ressemblera à ceci :

[
    ['Bob', 'b'],
    ['Jason', 'c'],
    ['Henry', 'b'],
    ['Thomas', 'b'],
    ['Anne', 'a'],
    ['Andrew', 'd'],
]
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal