Se você já está em JavaScript há um tempo, deve saber que o tipo de função de classificação da matriz é um método no protótipo da matriz, nomeadamente Array.prototype.sort (), Sort (CompareFunction), onde a CompareFunction é uma função de comparação. Vamos dar uma olhada em uma descrição de Mozilla Mdn:
Se a CompareFunction não for fornecida, os elementos serão classificados convertendo -os em strings e comparando strings na ordem lexicográfica ("dicionário" ou "Livro telefônica", não numérica). Por exemplo, "80" vem antes de "9" em ordem lexicográfica, mas em uma classificação numérica 9 vem antes de 80.
Aqui estão alguns exemplos simples:
A cópia do código é a seguinte:
// saída [1, 2, 3]
console.log ([3, 2, 1] .sort ());
// saída ["a", "b", "c"]
console.log (["C", "B", "A"]. Sort ());
// saída [1, 2, "A", "B"]
console.log (["b", 2, "a", 1] .sort ());
Como pode ser visto no exemplo acima, o padrão é classificado na ordem alfabética do dicionário.
Felizmente, Sort aceita uma função de comparação personalizada, conforme mostrado no exemplo a seguir:
A cópia do código é a seguinte:
função comparefunção (a, b) {
if (a> b) {
retornar -1;
} else if (a <b) {
retornar 1;
}outro {
retornar 0;
}
}
// saídas ["zuojj", "benjamin", "1"]
console.log (["benjamin", "1", "zuojj"]. classy (comparefunction));
Após a classificação, temos outra pergunta: como controlar a ordem ascendente e descendente?
A cópia do código é a seguinte:
função comparefunção (sinalizador) {
sinalizador = sinalizador? Bandeira: "ASC";
Função de retorno (a, b) {
if (a> b) {
bandeira de retorno === "desc"? -1: 1;
} else if (a <b) {
bandeira de retorno === "desc"? 1: -1;
}outro {
retornar 0;
}
};
}
// saídas ["1", "Benjamin", "Zuojj"]
console.log (["benjamin", "1", "zuojj"]. classy (compareFunction ()));
// saídas ["zuojj", "benjamin", "1"]
console.log (["benjamin", "1", "zuojj"]. classificar (compararfunction ("desc")));
As regras de classificação para comparação são as seguintes:
1.Se retornar um número negativo, a será classificado para um índice mais baixo na matriz.
2.Se retornar um número positivo, a será classificado para um índice mais alto.
3.e se retornar 0, nenhuma classificação é necessária.
Vamos dar uma olhada em uma passagem extraída de Mozilla Mdn:
O comportamento do método de classificação mudou entre JavaScript 1.1 e JavaScript 1.2. Para explicar esta descrição, vejamos um exemplo:
No JavaScript 1.1, em algumas plataformas, o método de classificação não funciona. Este método funciona em todas as plataformas para JavaScript 1.2.
No JavaScript 1.2, esse método não converte mais elementos indefinidos em nulo; Em vez disso, os classifica para a ponta da matriz. Clique aqui para obter detalhes.
A cópia do código é a seguinte:
var arr = [];
arr [0] = "Ant";
arr [5] = "Zebra";
// saídas ["Ant", 5: "Zebra"]
console.log (arr);
// Saídas 6
console.log (arr.length);
// produz "Ant ****** Zebra"
console.log (arr.join ("*"));
//Organizar
var sTELARR = arr.sort ();
// saídas ["Ant", "Zebra"]
console.log (STELARR);
// Saídas 6
console.log (STEARL.Length);
// Saídas "Ant*Zebra ****"
console.log (STELARR.JOIN ("*"));
Espero que este artigo seja útil para você aprender e entender o método Sort (). Espero que você critique e corrija quaisquer aspectos inadequados no artigo.
Link de referência: https://developer.mozilla.org/zh-cn/docs/web/javascript/reference/global_objects/array/sort