Vous êtes ici : Accueil > Référence HTML et JavaScript > Objet Array > Méthode sort

Méthode sort

Description

Trie les éléments du tableau dans l'ordre alphabétique.

Syntaxe

void sort([Object sortFunction])

Paramètres

  • Object sortFunction : optionnel : Permet de spécifier une fonction qui effectuera un tri personnalisé du tableau.

Exemple

Ce script présente un exemple simple, il trie un tableau de véhicules par ordre alphabétique.

// On crée un tableau
var tab = new Array("train", "bus", "bateau", "voiture", "avion", "camion", "hélicoptère", "car", "soucoupe volante");

//
ON trie les éléments du tableau
tab.sort();

// et on affiche le résultat
alert(tab);

Exécuter le script

Le problème

Le script suivant effectue un tri sur un tableau de nombres.

var tab = new Array(1,
7, 2, 10, 17, 24, 273, 104);
alert(tab.sort());

Exécuter le script

JavaScript débloque, me direz-vous : on lit effectivement 1, 10, 104, 17, 2, 24, 273, 7, et on voulait 1, 2, 7, 10, 17, 24, 104, 273, enfin, un tri numérique cohérent, pas ce tri complètement aléatoire !

La raison

La raison de ce dysfonctionnement, bien que cela n'en soit pas tout à fait un, est que JavaScript effectue un tri alphabétique dans tous les cas.

La solution

La solution au problème ci-dessus est assez simple à mettre en oeuvre. Jusqu'ici, nous n'utilisions pas le paramètre optionnel de la méthode sort. Nous allons le faire maintenant.

Comme paramètre de sort, il faut passer une fonction dont le but est d'effectuer un tri personnalisé. Cette fonction doit attendre deux paramètres, qui sont deux éléments du tableau à comparer (c'est la fonction sort qui gère les éléments qu'il comparera), et doit retourner un entier qui indiquera le résultat de la comparaison. Si le nombre retourné est négatif, cela signifie que le premier élément doit se positionner avant le deuxième. Si la valeur retournée est positive, cela signifie que le deuxième élément devra se positionner avant le premier. Si la valeur retournée est 0, cela indique que les deux éléments sont strictement égaux.

La fonction doit en plus être programmée de telle manière que fonction(élément1, élément2) + fonction(élément2, élément1) doit être égal à 0. Mais si vous regardez le script ci-dessous, cela ne constitue pas un problème : 5-7 + 7-5 = 0 par exemple.

Voici le script qui effectue le tri numérique correct en reprenant le tableau du script précédent :

var tab = new Array(1, 7, 2, 10,
17, 24, 273, 104);
tab.sort(function (a, b) { return a-b; });
alert(tab);

Exécuter le script

Voir aussi

reverse.

Vous êtes ici : Accueil > Référence HTML et JavaScript > Objet Array > Méthode sort

Dernière modification de cette page : Lundi 3 octobre 2005 17:20
Haut de page  •  Contact  •  RSS  •  Valide XHTML 1.0