Quand il s'agit de tri de tableaux, la première chose dont il faut parler doit être le tri des tableaux, car le tri des tableaux est la base du tri des tableaux.
JavaScript fournit la méthode sort() pour les tableaux pour le tri des tableaux. Par défaut, cette méthode organisera les tableaux dans Array dans l'ordre des codes ASCII. JavaScript fournit également la méthode reverse() pour les tableaux.
Regardez un exemple :
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
}
sortArray();
Haha, 5 est supérieur à 32. Ce n'est évidemment pas le résultat souhaité. Comme mentionné tout à l'heure, la méthode sort() trie selon l'ordre des codes ASCII.
En fait, la méthode sort() permet également un paramètre de type fonction, que l'on peut appeler une fonction de comparaison. Lorsque la fonction de comparaison peut recevoir deux paramètres, voici la signification de la valeur de retour de la fonction :
-1 : Le premier paramètre est inférieur au 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
Copier le code Le code est le suivant :
/**
* Fonction de comparaison
* @param {Object} param1 Paramètre 1 à comparer
* @param {Object} param2 Paramètre 2 à comparer
* @return {Number} Si param1 > param2 renvoie 1
* dehors peut être
* Si param1 <
*/
fonction compareFunc(param1,param2){
//Si les deux paramètres sont des types 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 == "number" && typeof param2 == "string"){
return -1 ;
}
//Si le paramètre 1 est une chaîne et le paramètre 2 est un nombre
If(typeof param1 == "string" && typeof param2 == "number"){
Retour 1 ;
}
//Si les deux paramètres sont des nombres
If(typeof param1 == "numéro" && typeof param2 == "number"){
Si (param1 > param2) renvoie 1 ;
Si(param1 == param2) renvoie 0;
Si (param1 < param2) renvoie -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(). Cette méthode est une méthode de tri de chaînes. Elle n'a qu'un seul paramètre, qui est la chaîne à comparer.
Les instructions spécifiques sont les suivantes :
1. Si l'objet String est classé par ordre alphabétique avant la chaîne dans le paramètre, un nombre négatif est renvoyé
2. Si l'objet String est disposé après la chaîne dans le paramètre dans l'ordre des caractères, renvoie un nombre positif
3. Si l'objet String est égal à la chaîne dans le paramètre, renvoyez 0
De plus, la méthode localeCompare() a une autre caractéristique unique, qui peut se refléter dans sa signature de méthode locale (local, local), ce qui signifie que sa mise en œuvre est basée sur les caractéristiques régionales , si elle est dans le système anglais. , sa mise en œuvre peut être dans l'ordre croissant des chaînes, si en chinois, sa mise en œuvre peut être conforme au 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 passera pas mal.
Référez-vous aux procédures suivantes :
Copier le code Le code est le suivant :
var testArray = ["foot","本","之","家"];
document.write(testArray.sort(
fonction compareFunction(param1,param2){
Return Param1.Localecompare (Param2); // Sortie :, maison, livre, pieds
}
));