En JavaScript, podemos ordenar los elementos de un arreglo fácilmente con el método incorporado sort().

Sin embargo, los tipos de datos (cadena, número, etc.) pueden diferir de un arreglo a otro. Esto significa que usar únicamente el método sort() no siempre es la solución adecuada.

En este post, aprenderás como ordenar un arreglo en JavaScript usando el método sort() con cadenas y números.

Arreglo de Cadenas

Comencemos con cadenas:

const equipos = ['Real Madrid', 'Manchester Utd', 'Bayern Munich', 'Juventus'];

Cuando usamos el método sort(), los elementos se ordenarán en orden ascendente (de la A a la Z) por defecto:

equipos.sort(); 

// ['Bayern Munich', 'Juventus', 'Manchester Utd', 'Real Madrid']

Si prefieres ordenar el arreglo en orden descendente, debes usar el método reverse() en su lugar:

equipos.reverse();

// ['Real Madrid', 'Manchester Utd', 'Juventus', 'Bayern Munich']

Arreglo de Números

Lamentablemente, ordenar números no es tan simple. Si aplicamos el método sort() directamente a un arreglo de números, veremos un resultado inesperado:

const numeros = [3, 23, 12];

numeros.sort(); // --> 12, 23, 3

Por qué el método sort() no funciona con números

En realidad está funcionando, pero este problema ocurre porque JavaScript ordena los números alfabéticamente. Déjame explicarte esto en detalle.

Pensemos en A=1, B=2 y C=3.

const miArreglo = ['C', 'BC', 'AB'];

miArreglo.sort(); // [AB, BC, C]

Por ejemplo, si tenemos tres cadenas como C (3), BC (23) y AB (12), JavaScript las ordenará como AB, BC y C en orden ascendente, lo que es alfabéticamente correcto.

Sin embargo, JavaScript ordenará los números (alfabéticamente nuevamente) como 12, 23 y 3, lo cual es incorrecto.

Solución: la función de comparación

Afortunadamente, podemos complementar el método sort() con una función de comparación básica que haga el truco:

function(a, b) {return a - b}

El método sort() puede ordenar valores negativos, cero y positivos en el orden correcto. Cuando compara dos valores, los envía a nuestra función de comparación y luego ordena los valores de acuerdo al resultado devuelto.

  • Si el resultado es negativo, a se ordena antes que b.
  • Si el resultado es positivo, b se ordena antes de a.
  • Si el resultado es 0, nada cambia.

Todo lo que necesitamos es usar la función de comparación dentro del método sort():

const numeros = [3, 23, 12];

numeros.sort(function(a, b){return a - b}); // --> 3, 12, 23

Si queremos ordenar los números en orden descendente, esta vez necesitamos restar el segundo parámetro (b) del primero (a):

const numeros = [3, 23, 12];

numeros.sort(function(a, b){return b - a}); // --> 23, 12, 3

En conclusión

Como podemos ver, ordenar los elementos de un arreglo puede hacerse fácilmente en JavaScript con el método sort(), si sabemos usarlo correctamente. Espero que mi post pueda servirte de ayuda para entenderlo y usarlo de la mejor forma.

Si deseas obtener más información sobre Desarrollo Web, no dudes en visitar mi canal de Youtube .

¡Gracias por leer!

Traducido del artículo de Cem Eygi - JavaScript Array Sort – How to Use JS Sort Methods (With Code Examples)