English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Método de ordenación sort del Array

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.

Te gustará