Quando se trata de classificação da tabela, a primeira coisa que precisamos falar é a classificação da matriz, porque a classificação da matriz é a base da classificação da tabela.
O JavaScript fornece um método Sort () para matrizes para classificação de tabela. Por padrão, esse método organizará as matrizes em matrizes na ordem dos códigos ASCII. O JavaScript também fornece um método de matriz reverse () para matrizes.
Dê uma olhada no exemplo:
A cópia do código é a seguinte:
function sTorArray () {
var ArrayTest = ["Z", 5,2, "A", 32,3];
Arraytest.sort ();
alerta (Arraytest.toString ()); // Saída: 2,3,32,5, a, z
Arraytest.Reverse ();
alerta (Arraytest.toString ()); // saída: z, a, 5,32,3,2
}
sTorArray ();
Haha, 5 é maior que 32, é óbvio que esse não é o resultado que queremos. Acabei de dizer que o método Sort () é classificado na ordem do código ASCII.
De fato, o método Sort () também permite pegar um parâmetro do tipo função, que podemos chamar de uma função de comparação. Quando a função de comparação pode receber dois parâmetros, a função a seguir retorna o significado do valor:
A cópia do código é a seguinte:
-1: O primeiro parâmetro é menor que o segundo parâmetro
0: O primeiro parâmetro é igual ao segundo parâmetro
1: O primeiro parâmetro é maior que o segundo parâmetro
A cópia do código é a seguinte:
/**
* Função de comparação
* @param {objeto} param1 param 1 para comparar
* @param {objeto} param2 param 2 para comparar
* @return {número} se param1> param2 retorna 1
* Se param1 == param2 retorna 0
* Se param1 <param2 retornar -1
*/
função comparefunc (param1, param2) {
// Se ambos os parâmetros forem o tipo de string
if (typeof param1 == "string" && typeof param2 == "string") {
retornar param1.localecompare (param2);
}
// Se o parâmetro 1 for um número, o parâmetro 2 é uma string
if (typeof param1 == "número" && typeof param2 == "string") {
retornar -1;
}
// Se o parâmetro 1 for uma string, o parâmetro 2 é um número
if (typeof param1 == "string" && typeof param2 == "número") {
retornar 1;
}
// Se ambos os parâmetros forem números
if (typeof param1 == "número" && typeof param2 == "número") {
if (param1> param2) retornar 1;
if (param1 == param2) retornar 0;
if (param1 <param2) retornar -1;
}
}
Quando executamos o ArrayTest.sort (comparefunc), obtemos o resultado correto.
Neste ponto, temos que explicar o uso do método localCompare (), que é um método para classificar seqüências, com apenas um parâmetro, a saber, a sequência a ser comparada.
A explicação específica é a seguinte:
1. Se o objeto String for organizado em ordem alfabética antes da string no parâmetro, retorne um número negativo
2. Se o objeto String for organizado na ordem do caractere após a string no parâmetro, retorne um número positivo
3. Se o objeto String for igual à sequência no parâmetro, retorne 0.
Além disso, o método localCompare () possui outro recurso exclusivo. Esse recurso exclusivo pode ser refletido em seu local de assinatura de método (no local, local), ou seja, sua implementação é baseada em características regionais. Se no sistema inglês, sua implementação pode estar em ordem crescente de cordas e, se em chinês, sua implementação será baseada no pinyin da primeira letra.
Haha, isso significa que, mesmo se envolvemos caracteres chineses no programa, nossa classificação não dará errado.
Consulte o seguinte programa:
A cópia do código é a seguinte:
var testArray = ["pé", "livro", "ITE", "home"];
document.write (testArray.sort (
função comparefunção (param1, param2) {
retornar param1.localecompare (param2); // saída: 一, casa, livro, pé
}
));