Método sort
El método sort realiza la ordenación de un array
en orden lexicográfico y devuelve el array
ya modificado. Como parámetro opcional
se puede indicar una función propia para la ordenación.
Sintaxis
array.sort([función]);
Ejemplo
Vamos a ordenar un array:
let arr = ['d', 'b', 'a', 'c'];
console.log(arr.sort());
Resultado de la ejecución del código:
['a', 'b', 'c', 'd']
Ejemplo
Vamos a ordenar un array con números:
let arr = [4, 1, 7, 2];
console.log(arr.sort());
Resultado de la ejecución del código:
[1, 2, 4, 7]
Ejemplo
Vamos a añadir números al array y ordenarlo:
let arr = [1, 123, 2, 4, 111, 7];
console.log(arr.sort());
Como resultado de la ejecución del código veremos que los números no se disponen en orden ascendente, sino en orden lexicográfico, es decir, los números se comparan entre sí como cadenas. En este caso, la comparación se realiza por cada carácter, si el código del primer carácter es mayor que el del adyacente, etc. Resultado:
[1, 111, 123, 2, 4, 7]
Ejemplo
Ahora vamos a ordenar el array
con una función, en la que especificaremos la condición -
si el primer parámetro es mayor que el segundo, entonces lo intercambiamos
(para ello, en return cualquier número positivo).
En el caso contrario, no se requiere intercambio y indicamos
0 o cualquier número negativo:
let arr = [1, 123, 2, 4, 111, 7];
arr.sort(function(a, b) {
if (a > b) {
return 1;
} else {
return -1;
}
});
console.log(arr);
Resultado de la ejecución del código:
[1, 2, 4, 7, 111, 123]
Ejemplo
Vamos a acortar el código por conveniencia en nuestra función del ejemplo anterior:
let arr = [1, 123, 2, 4, 111, 7];
arr.sort(function(a, b) {
return a - b;
});
console.log(arr);
Resultado de la ejecución del código:
[1, 2, 4, 7, 111, 123]
Ejemplo
Y ahora con la función vamos a ordenar el array en orden descendente:
let arr = [1, 123, 2, 4, 111, 7];
arr.sort(function(a, b) {
return b - a;
});
console.log(arr);
Resultado de la ejecución del código:
[123, 111, 7, 4, 2, 1]
Ejemplo
Vamos a ordenar un array de objetos
por la clave 'one' en orden ascendente:
let arr = [
{one: 1, two: 2},
{one: 7, two: 1},
{one: 3, two: 3}
];
arr.sort(function(a, b) {
return a.one - b.one;
});
console.log(arr);
Resultado de la ejecución del código:
[
{one: 1, two: 2},
{one: 3, two: 3},
{one: 7, two: 1}
]
Ejemplo
Y ahora vamos a ordenar el array de objetos
por la clave 'two':
let arr = [
{one: 1, two: 2},
{one: 7, two: 1},
{one: 3, two: 3}
];
arr.sort(function(a, b) {
return a.two - b.two;
});
console.log(arr);
Resultado de la ejecución del código:
[
{one: 7, two: 1},
{one: 1, two: 2},
{one: 3, two: 3}
]
Ejemplo
Vamos a comprobar si el array ha cambiado después
de aplicar el método sort:
let arr = ['b', 'a', 'd', 'c'];
let res = arr.sort();
console.log(arr);
Resultado de la ejecución del código:
['a', 'b', 'c', 'd']
Véase también
-
método
filter,
que permite filtrar elementos del array