Ordenar arrays en JavaScript

En este artículo vamos a explicar las diferentes instrucciones disponibles en JavaScript para ordenar arrays. En artículos anteriores ya analizamos diversos métodos y algoritmos para ordenar arrays, explicando las técnicas más utilizadas desde un punto de vista general, aplicables a prácticamente cualquier lenguaje de programación.

Ahora nos centraremos específicamente en JavaScript y en las instrucciones que nos ofrece para ordenar arrays de forma sencilla, incluso en una sola línea de código. Estos son los métodos más comunes para ordenar arrays en JavaScript.

Ordenar arrays con sort()

Este método JavaScript permite ordenar arrays localmente, por lo que el array original queda modificado. Por defecto, ordena los elementos alfabéticamente cuando se aplican a cadenas de texto y en orden ascendente cuando se aplican a números. Esto significa que compara los elementos como si fueran texto, incluso si son números, lo cual puede dar resultados incorrectos en listas numéricas.

const numeros = [10, 1, 21, 3];
numeros.sort(); 
console.log(numeros);
// Resultado [1, 10, 21, 3] porque ordena como strings

Se puede proporcionar una función de comparación para especificar un orden personalizado. Esto es especialmente útil si el array sólo contiene números.

numeros.sort((a, b) => a - b); // ascendente
console.log(numeros); 
// Resultado [1, 3, 10, 21]

numeros.sort((a, b) => b - a); // descendente
console.log(numeros); 
// Resultado [21, 10, 3, 1]

También podemos aplicar sort() para ordenar arrays de objetos:

const users = [{name: "Ana", edad: 30}, {name: "Luis", edad: 20}];
users.sort((a, b) => a.edad - b.edad);
console.log(users);
// Resultado [{name: "Luis", edad: 20}, {name: "Ana", edad: 30}]

Como podemos ver, sort() es un método muy sencillo pero que encierra bastante potencial para ordenar todo tipo de arrays en JavaScript.

Ordenar arrays con reverse()

Este método simplemente invierte el orden de los elementos en un array. Al igual que con el método sort(), también modifica el array original. Suele utilizarse después de haber realizado algún tipo de ordenación anterior.

const array = [1, 2, 3, 4, 5];
console.log(array.reverse());
// Resultado [5, 4, 3, 2, 1]

Transformar arrays con map()

Aunque no es un método de ordenación por sí mismo, map() se usa comúnmente para transformar un array y puede usarse en combinación con otras funciones javascript para ordenar arrays de diferentes maneras. El método map() aplica una función a cada elemento de un array y devuelve un nuevo array con los resultados de la función aplicada a cada elemento.

const array = [1, 2, 3, 4, 5];

// Multiplica x 2 cada elemento del array
const newArray = array.map(item => item * 2);

console.log(newArray); 
// Resultado [2, 4, 6, 8, 10]

Filtrar arrays con filter()

Similar a map(), filter() no es un método de ordenación, pero se utiliza para filtrar elementos de un array según un criterio específico. Este método se utiliza para crear un nuevo array con todos los elementos que pasan una prueba (en una función proporcionada). Los elementos que no pasan la prueba se filtran.

const array = [1, 2, 3, 4, 5];

// Filtrar los elementos mayores que 2
const filteredArray = array.filter(item => item > 2);

console.log(filteredArray); 
// Resultado [3, 4, 5]

Combinaciones con splice(), slice()

Además de los métodos básicos como sort(), reverse(), map() y filter(), existen otras instrucciones JavaScript muy útiles que permiten ordenar y modificar arrays eliminando, reemplazando o extrayendo elementos. Esto puede ser especialmente útil cuando necesitamos extraer una parte del array antes o después de aplicar alguna ordenación o transformación.

Si queremos ir un paso más allá, podemos combinar splice() con slice() para controlar de forma precisa qué partes del array se procesan o se visualizan. Mientras que splice() modifica el array original, slice() permite crear una copia o extraer una porción sin alterarlo. Esto resulta útil si necesitamos ordenar solo una parte del array, pero queremos conservar el original intacto. Por ejemplo, podríamos usar slice(0, 10) para tomar los 10 primeros elementos de un array, luego aplicar sort() a esa copia, y dejar el resto del array sin tocar. También es habitual hacer un filter() sobre el array completo, luego un slice() para limitar resultados y finalmente un map() para transformar esos datos antes de mostrarlos. Estas combinaciones hacen que JavaScript sea extremadamente flexible a la hora de ordenar arrays o trabajar con listas de datos.

Ordenar arrays en JavaScript

Estos son los métodos más utilizados para ordenar arrays en JavaScript. Recuerda que estos métodos pueden modificar el array original, y que si quieres mantener el array original intacto, debes hacer una copia antes de aplicar estos métodos. A diferencia de slice(), el método splice() modifica el array original, lo que lo hace ideal en operaciones donde queremos transformar y reducir directamente el array fuente sin crear una copia.

Las ventajas de utilizar estos métodos nativos de JavaScript es que no tenemos que preocuparnos de programar ningún algoritmo y que se ejecutan con una simple instrucción. La desventaja es que al ser métodos nativos, en alguna ocasión pueden no ajustarse a nuestras necesidades. En ese caso siempre podemos programar nuestra función para ordenar arrays, en JavaScript a nuestro gusto.

Puedes consultar la documentación oficial en Array – JavaScript | MDN.

¡ Espero que este artículo sea de vuestro interés !

Deja un comentario