Si ha estado en JavaScript por un tiempo, debe saber que el tipo de función de clasificación de matriz es un método en el prototipo de matriz, a saber, array.prototype.sort (), sort (comparación comparable), donde lafunction comparación es una función de comparación. Echemos un vistazo a una descripción de Mozilla MDN:
Si no se suministra la formación comparable, los elementos se clasifican convirtiéndolos en cuerdas y comparando cadenas en el orden lexicográfico ("diccionario" o "guía telefónica", no numérica). Por ejemplo, "80" viene antes de "9" en orden lexicográfico, pero en una especie numérica, 9 viene antes de 80.
Aquí hay algunos ejemplos simples:
La copia del código es la siguiente:
// Salida [1, 2, 3]
console.log ([3, 2, 1] .sort ());
// Salida ["A", "B", "C"]
console.log (["c", "b", "a"]. sort ());
// Salida [1, 2, "A", "B"]
console.log (["b", 2, "a", 1] .sort ());
Como se puede ver en el ejemplo anterior, el valor predeterminado se clasifica en el orden alfabético del diccionario.
Afortunadamente, Sort acepta una función de comparación personalizada, como se muestra en el siguiente ejemplo:
La copia del código es la siguiente:
función comparación comparable (a, b) {
if (a> b) {
regreso -1;
} else if (a <b) {
regresar 1;
}demás {
regresar 0;
}
}
// salidas ["ZUOJJ", "Benjamin", "1"]
console.log (["benjamin", "1", "zuojj"]. sort (comparación comparable));
Después de clasificar, tenemos otra pregunta: ¿cómo controlar el orden ascendente y descendente?
La copia del código es la siguiente:
function comparefunction (flag) {
bandera = bandera? Bandera: "ASC";
Función de retorno (a, b) {
if (a> b) {
Return Flag === "Desc"? -1: 1;
} else if (a <b) {
Return Flag === "Desc"? 1: -1;
}demás {
regresar 0;
}
};
}
// salidas ["1", "Benjamin", "ZUojj"]
console.log (["Benjamin", "1", "ZUojj"]. Sort (comparación comparación ()));
// salidas ["ZUOJJ", "Benjamin", "1"]
console.log (["benjamin", "1", "zuojj"]. sort (comparefunction ("desc")));
Las reglas de clasificación para la función de comparación son las siguientes:
1. Si devuelve un número negativo, A se clasificará en un índice más bajo en la matriz.
2. Si devuelve un número positivo, A se clasificará a un índice más alto.
3.y si devuelve 0 no es necesaria la clasificación.
Echemos un vistazo a un pasaje extraído de Mozilla MDN:
El comportamiento del método de clasificación cambió entre JavaScript 1.1 y JavaScript 1.2. Para explicar esta descripción, veamos un ejemplo:
En JavaScript 1.1, en algunas plataformas, el método de clasificación no funciona. Este método funciona en todas las plataformas para JavaScript 1.2.
En JavaScript 1.2, este método ya no convierte elementos indefinidos en nulo; En su lugar, los clasifica hasta el extremo superior de la matriz. Haga clic aquí para obtener más detalles.
La copia del código es la siguiente:
var arr = [];
arr [0] = "Ant";
arr [5] = "Zebra";
// salidas ["Ant", 5: "Zebra"]
console.log (arr);
// salidas 6
console.log (arr.length);
// sale "Ant ****** Zebra"
console.log (arr.join ("*"));
//Clasificar
var sortArr = arr.sort ();
// salidas ["Ant", "Zebra"]
console.log (sortarr);
// salidas 6
console.log (sortarr.length);
// sale "Ant*Zebra ****"
console.log (sortarr.join ("*"));
Espero que este artículo sea útil para que aprenda y comprenda el método sort (). Espero que critiques y corrige cualquier aspecto inapropiado en el artículo.
Enlace de referencia: https://developer.mozilla.org/zh-cn/docs/web/javascript/reference/global_objects/array/sort