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
javascriptarray.sort([función]);
Ejemplo
Vamos a ordenar un array:
javascriptlet arr = ['d', 'b', 'a', 'c'];
console.log(arr.sort());
Resultado de la ejecución del código:
javascript['a', 'b', 'c', 'd']
Ejemplo
Vamos a ordenar un array con números:
javascriptlet arr = [4, 1, 7, 2];
console.log(arr.sort());
Resultado de la ejecución del código:
javascript[1, 2, 4, 7]
Ejemplo
Vamos a añadir números al array y ordenarlo:
javascriptlet 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:
javascript[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:
javascriptlet 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:
javascript[1, 2, 4, 7, 111, 123]
Ejemplo
Vamos a acortar el código por conveniencia en nuestra función del ejemplo anterior:
javascriptlet 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:
javascript[1, 2, 4, 7, 111, 123]
Ejemplo
Y ahora con la función vamos a ordenar el array en orden descendente:
javascriptlet 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:
javascript[123, 111, 7, 4, 2, 1]
Ejemplo
Vamos a ordenar un array de objetos
por la clave 'one' en orden ascendente:
javascriptlet 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:
javascript[
{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':
javascriptlet 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:
javascript[
{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:
javascriptlet arr = ['b', 'a', 'd', 'c'];
let res = arr.sort();
console.log(arr);
Resultado de la ejecución del código:
javascript['a', 'b', 'c', 'd']
Véase también
-
método
filter,
que permite filtrar elementos del array