Vous êtes ici : Accueil > Référence HTML et JavaScript > Objet Array > Méthode sort
Trie les éléments du tableau dans l'ordre alphabétique.
void sort([Object sortFunction])
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);
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());
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 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 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);
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