English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
El objeto Array de JavaScript tiene su propio método de ordenamiento sort(), que ordena los elementos del array, pero a veces los resultados del ordenamiento no son los que esperamos, por ejemplo
var arr = [12, 1, 2, 21, 3]; arr.sort(); alert(arr); El resultado obtenido es 1,12,2,21,3
¿Por qué es así? Porque el ordenamiento por defecto de JavaScript se realiza según el código ASCII de los caracteres, es decir, los números también se ordenan según su forma de cadena.
var strArr = ['a', '}}2', 'a2', '2a', 'b', '3']; alert(strArr.sort());
¿Qué resultado obtendremos? 2,2a,3,a,a2,b
Debido a que el código ascii de los números es menor que el de las letras, los números se colocan primero y las letras se colocan después.
¿Cómo manejar si desea que el array arr anterior siga el orden numérico?
JavaScript nos proporciona una entrada para pasar un parámetro a la función sort(), es decir, la función de comparación, para informar al algoritmo de ordenamiento sobre la relación entre valor y valor, mayor, menor o igual.
La función de comparación es una función con un algoritmo específico.
función compare_fn(value1, value2) { < value1 else if (value2) { devolver -1; }1 > value2) { devolver 1; } else { devolver 0; } }
Transmita la función de comparación compare_fn a sort para realizar el ordenamiento y luego realice la salida
arr.sort(compare_fn); alert(arr); obtener 1, 2, 3, 12, 21
La definición del valor de retorno del método sort del objeto Array en JavaScript es
Valor negativo: si el primer parámetro transmitido es menor que el segundo parámetro
Cero: los dos valores son iguales
Valor positivo: si el primer parámetro es mayor que el segundo parámetro
La función de comparación anterior también se puede abreviar como
función compare_fn(value1, value2) { devolver value1 - value2; }
Esta comparación es de orden ascendente
Si desea ordenar en orden descendente, simplemente cambie el signo del valor de retorno, dándoles a todos el valor inverso.
La función de comparación abreviada es
función compare_fn(value1, value2) { devolver -(value1 - value2); }
es
función compare_fn(value1, value2) { devolver value2 - value1; }
La notación simple es: ascendente; descendente.
La orden de clasificación sort del array Array que comparto con ustedes es todo, espero que les sirva de referencia y que apoyen más al tutorial de grito.