Ordenación de matrices de JavaScript: cómo utilizar métodos de ordenación de JS (con ejemplos de código)

En JavaScript, podemos ordenar los elementos de una matriz fácilmente con un método incorporado llamado función sort ().

Sin embargo, los tipos de datos (cadena, número, etc.) pueden diferir de una matriz a otra. Esto significa que usar el método sort () solo no siempre es una solución adecuada.

En esta publicación, aprenderá a ordenar una matriz en JavaScript utilizando el método sort () para cadenas y números.

Matriz de cadenas

Comencemos con cadenas:

const teams = ['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:

teams.sort(); // ['Bayern Munich', 'Juventus', 'Manchester Utd', 'Real Madrid']

Si prefiere ordenar la matriz en orden descendente, debe usar el método reverse () en su lugar:

teams.reverse(); // ['Real Madrid', 'Manchester Utd', 'Juventus', 'Bayern Munich']

Matriz de números

Lamentablemente, ordenar los números no es tan simple. Si aplicamos el método de clasificación directamente a una matriz de números, veremos un resultado inesperado:

const numbers = [3, 23, 12]; numbers.sort(); // --> 12, 23, 3

Por qué el método sort () no funciona para 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 myArray = ['C', 'BC', 'AB']; myArray.sort(); // [AB, BC, C]

Por ejemplo, si tenemos tres cadenas como C (3), BC (23) y AB (12), JavaScript las clasificará como AB, BC y C en orden ascendente, 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 admitir el método sort () con una función de comparación básica que hará el truco:

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

El método de clasificación, afortunadamente, puede clasificar los valores negativos, cero y positivos en el orden correcto. Cuando el método sort () compara dos valores, envía los valores a nuestra función de comparación y ordena los valores de acuerdo con el valor 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 numbers = [3, 23, 12]; numbers.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 numbers = [3, 23, 12]; numbers.sort(function(a, b){return b - a}); // --> 23, 12, 3

Envolver

Entonces, como podemos ver, ordenar los elementos de una matriz se puede hacer fácilmente en JavaScript con el método sort (), si sabemos cómo usarlo correctamente. Espero que mi publicación te ayude a comprender cómo usar el método sort () en JavaScript de la manera correcta.

Si desea obtener más información sobre el desarrollo web, no dude en visitar mi canal de Youtube.

¡Gracias por leer!