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