Cuando se trata de la clasificación de la mesa, lo primero de lo que debemos hablar es la clasificación de la matriz, porque la clasificación de matriz es la base de la clasificación de la mesa.
JavaScript proporciona un método Sort () para matrices para la clasificación de la tabla. Por defecto, este método organizará las matrices en la matriz en el orden de los códigos ASCII. JavaScript también proporciona un método de matriz inversa () para matrices.
Echa un vistazo al ejemplo:
La copia del código es la siguiente:
función sortArray () {
var arrayTest = ["z", 5,2, "a", 32,3];
ArrayTest.sort ();
alerta (ArrayTest.ToString ()); // Salida: 2,3,32,5, A, Z
ArrayTest.Reverse ();
alerta (ArrayTest.ToString ()); // Salida: Z, A, 5,32,3,2
}
sortArray ();
Jaja, 5 es más grande que 32, es obvio que este no es el resultado que queremos. Acabo de decir que el método sort () se clasifica en el orden del código ASCII.
De hecho, el método Sort () también permite tomar un parámetro de tipo funcional, que podemos llamar una función de comparación. Cuando la función de comparación puede recibir dos parámetros, la siguiente función devuelve el significado del valor:
La copia del código es la siguiente:
-1: el primer parámetro es más pequeño que el segundo parámetro
0: El primer parámetro es igual al segundo parámetro
1: El primer parámetro es mayor que el segundo parámetro
La copia del código es la siguiente:
/**
* Función de comparación
* @param {objeto} param1 param 1 para comparar
* @param {objeto} param2 param 2 para comparar
* @return {número} if param1> param2 devuelve 1
* Si Param1 == Param2 devuelve 0
* Si Param1 <Param2 devuelve -1
*/
función compareFunc (param1, param2) {
// Si ambos parámetros son de tipo de cadena
if (typeof param1 == "string" && typeof param2 == "string") {
return param1.localecompare (param2);
}
// Si el parámetro 1 es un número, el parámetro 2 es una cadena
if (typeof param1 == "número" && typeof param2 == "string") {
regreso -1;
}
// Si el parámetro 1 es una cadena, el parámetro 2 es un número
if (typeof param1 == "string" && typeof param2 == "número") {
regresar 1;
}
// Si ambos parámetros son números
if (typeof param1 == "número" && typeof param2 == "número") {
if (param1> param2) return 1;
if (param1 == param2) return 0;
if (param1 <param2) return -1;
}
}
Cuando ejecutamos ArrayTest.sort (comparación en comparación) obtenemos el resultado correcto.
En este punto, tenemos que explicar el uso del método localCompare (), que es un método para clasificar las cadenas, con solo un parámetro, a saber, la cadena a comparar.
La explicación específica es la siguiente:
1. Si el objeto de cadena se organiza alfabéticamente antes de la cadena en el parámetro, devuelva un número negativo
2. Si el objeto de cadena está dispuesto en el orden de caracteres después de la cadena en el parámetro, devuelva un número positivo
3. Si el objeto de cadena es igual a la cadena en el parámetro, return 0.
Además, el método LocalEcompare () tiene otra característica única. Esta característica única se puede reflejar en su conjunto de firma de método (en el sitio, local), es decir, su implementación se basa en características regionales. Si en el sistema inglés, su implementación puede estar en orden ascendente de cuerdas, y si en chino, su implementación se basa en el pinyin de la primera letra.
Jaja, esto significa que incluso si involucramos caracteres chinos en el programa, nuestra clasificación no saldrá mal.
Consulte el siguiente programa:
La copia del código es la siguiente:
var testArray = ["Foot", "Libro", "Ite", "Inicio"];
document.write (testArray.sort (
Función CompareFunction (Param1, Param2) {
return param1.localecompare (param2); // Salida: 一, hogar, libro, pie
}
));