Maison  >  Article  >  interface Web  >  Utilisation du tri combiné avec localeCompare pour implémenter un exemple de tri chinois dans les compétences JS_javascript

Utilisation du tri combiné avec localeCompare pour implémenter un exemple de tri chinois dans les compétences JS_javascript

WBOY
WBOYoriginal
2016-05-16 16:41:151444parcourir

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 :

Copier le code Le code est le suivant :

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 :

Copier le code Le code est le suivant :
-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
            }
));
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn