bonjour,
Voilà, je stocke dans un tableau des chiffres (1,2,...,15,16) et, une fois le tableau rempli, j'utilise la méthode Javascript : Tableau.sort()
Malheureusement, cette méthode me trie mon tableau en comparant que les premiers chiffres des valeurs... ce qui donne :
1 , 10 , 11 , 12 , 2 , 3 , 31 , 32 , 4 , ...
Vous conviendrez que ce n'est pas tout à fait l'effet recherché... Si vous connaissez la solution à ce pb, merci de m'en toucher un mot.
> Christophe

Car sans une fonction de comparaison specialisee (compare_entiers_func dans l'exemple), Javascript va utiliser sa fonction (interne) de comparaison de chaines de caracteres, puisque les elements du tableau sont des chaines de caracteres.
Cette fonction de comparaison interne utilise une compaison lexographique:
'11' vient avant '2', de meme que 'aa' vient avant 'b'.
Pour plus d'inormation sur les fonctions de comparaison:
https://developer.mozilla.org/fr/R%C3%A9f%C3%A9rence_de_JavaScript_1.5_Core/Objets_globaux/Array/sort
Dans l'exemple suivant, la fonction compare_entiers_func convertis donc les chaines en entiers avant des comparer.
<html> <head> <script type="text/javascript"> // Le tableau non trie contenant des chaines de caracteres var tab = ['5', '6', '12', '22', '20', '11', '9', '1', '8', '7', '11' ] // une fonction qui compare des chaines contenant des entiers function compare_entiers_func(a, b) { // Elle doit retourner : // -1 si a < b // 0 si a = b // 1 si a > b return parseInt(a) - parseInt(b) } // on trie le tableau en utilisant la fonction de comparaison // pour chaines contenant des entiers: tab.sort(compare_entiers_func) // puis on affiche document.write(tab.join(', ')) </script> <meta http-equiv="Content-Type" content="text/plain"> </head> <body> </body> </html>Resultat :