En ce qui concerne le tri de table, la première chose dont nous devons parler est le tri des tableaux, car le tri des tableaux est la base du tri de table.
JavaScript fournit une méthode tri () pour les tableaux pour le tri de table. Par défaut, cette méthode organisera les tableaux dans le tableau dans l'ordre des codes ASCII. JavaScript fournit également une méthode Reverse () pour les tableaux.
Jetez un œil à l'exemple:
La copie de code est la suivante:
fonction sortarray () {
var arraytest = ["z", 5,2, "a", 32,3];
arraytest.sort ();
alert (arraytest.toString ()); // Sortie: 2,3,32,5, a, z
arraytest.reverse ();
alert (arraytest.toString ()); // Sortie: Z, A, 5,32,3,2
}
SoiRArray ();
Haha, 5 est plus grand que 32, il est évident que ce n'est pas le résultat que nous voulons. Je viens de dire que la méthode SORT () est triée dans l'ordre du code ASCII.
En fait, la méthode tri () permet également de prendre un paramètre de type fonction, que nous pouvons appeler une fonction de comparaison. Lorsque la fonction de comparaison peut recevoir deux paramètres, la fonction suivante renvoie la signification de la valeur:
La copie de code est la suivante:
-1: Le premier paramètre est plus petit que le deuxième paramètre
0: le premier paramètre est égal au deuxième paramètre
1: le premier paramètre est supérieur au deuxième paramètre
La copie de code est la suivante:
/ **
* Fonction de comparaison
* @param {objet} Param1 Param 1 à comparer
* @param {objet} param2 param 2 à comparer
* @return {nombre} si param1> param2 renvoie 1
* Si param1 == param2 renvoie 0
* Si param1 <param2 renvoie -1
* /
fonction comparefunc (param1, param2) {
// Si les deux paramètres sont de type de chaîne
if (typeof param1 == "string" && typeof param2 == "String") {
return Param1.LocaleCompare (param2);
}
// Si le paramètre 1 est un nombre, le paramètre 2 est une chaîne
if (typeof param1 == "nombre" && type de param2 == "string") {
retour -1;
}
// Si le paramètre 1 est une chaîne, le paramètre 2 est un nombre
if (typeof param1 == "string" && typeof param2 == "nombre") {
retour 1;
}
// Si les deux paramètres sont des nombres
if (typeof param1 == "nombre" && typeof param2 == "nombre") {
if (param1> param2) return 1;
if (param1 == param2) return 0;
if (param1 <param2) return -1;
}
}
Lorsque nous exécutons ArrayTest.Sort (CompareFunc), nous obtenons le résultat correct.
À ce stade, nous devons expliquer l'utilisation de la méthode localecompare (), qui est une méthode pour trier les chaînes, avec un seul paramètre, à savoir la chaîne à comparer.
L'explication spécifique est la suivante:
1. Si l'objet String est organisé par ordre alphabétique avant la chaîne dans le paramètre, renvoyez un nombre négatif
2. Si l'objet String est organisé dans l'ordre des caractères après la chaîne dans le paramètre, renvoyez un numéro positif
3. Si l'objet String est égal à la chaîne du paramètre, retournez 0.
De plus, la méthode localecompare () a une autre fonctionnalité unique. Cette caractéristique unique peut se refléter dans son paramètre de signature de méthode (sur place, local), c'est-à-dire que sa mise en œuvre est basée sur les caractéristiques régionales. Si dans le système anglais, sa mise en œuvre peut être dans l'ordre croissant des chaînes, et si en chinois, sa mise en œuvre est basée sur le pinyin de la première lettre.
Haha, cela signifie que même si nous impliquons des caractères chinois dans le programme, notre tri ne se trompera pas.
Reportez-vous au programme suivant:
La copie de code est la suivante:
var TestArray = ["Foot", "Book", "ITE", "Home"];
document.write (TestArray.sort (
fonction compareFunction (param1, param2) {
return Param1.LocaleCompare (param2); // Sortie: 一, maison, livre, pied
}
));