Damián De Luca - Capacitación & Desarrollo Web

Métodos avanzados para operar con Arrays en JavaScript

JavaScript
Arrays en JavaScript

Las operaciones con Arrays son características fundamentales JavaScript. Son funcionalidades que se aprenden junto con las bases del lenguaje. Lo interesante es que su evolución puede continuar de la mano de los avances del lenguaje.

A partir de la llegada de ECMAScript 2023, se han introducido nuevas operaciones con arrays. Esto promete hacer que nuestro código sea más eficiente y claro. En este artículo, analizo las operaciones incorporadas, por qué fueron añadidas, cómo se comparan con métodos anteriores y qué ventajas ofrecen, así como su compatibilidad en navegadores y entornos.

¿Por qué incorporar nuevos métodos ?

Los arrays son una de las estructuras de datos más utilizadas en JavaScript. Aunque ECMAScript ha añadido mejoras constantes a los arrays a lo largo del tiempo, todavía existían limitaciones para ciertas operaciones comunes. Antes de 2023, algunas tareas como encontrar el último elemento que cumpliera una condición o modificar la estructura interna de un array no se realizaban de manera óptima, lo que resultaba en código más complejo y difícil de leer.

Las nuevas operaciones introducidas en ECMAScript 2023 abordan estas necesidades, brindando herramientas que simplifican la manipulación de arrays y, al mismo tiempo, mejoran el rendimiento del código.

Nuevas Operaciones en ECMAScript 2023

1. Array.prototype.findLast()

Este método busca el último elemento de un array que cumple con una condición especificada en una función callback.

Sintaxis:

let ultimoElemento = array.findLast(callback);

Ejemplo práctico con un array de números para encontrar el último número par:

let numeros = [1, 2, 3, 4, 5, 6];
let ultimoPar = numeros.findLast(num => num % 2 === 0);
console.log(ultimoPar); // 6

Antes de ECMAScript 2023: Para lograr el mismo resultado, los desarrolladores tenían que invertir el array o utilizar bucles más largos.

let ultimoPar = [...numeros].reverse().find(num => num % 2 === 0);

Ventajas:

2. Array.prototype.findLastIndex()

Este método es el equivalente a findLast(), pero en lugar de devolver el valor del elemento, retorna el índice del último elemento que cumple la condición.

Sintaxis:

let indiceUltimo = array.findLastIndex(callback);

Ejemplo:

let indiceUltimoPar = numeros.findLastIndex(num => num % 2 === 0);
console.log(indiceUltimoPar); // 5

Antes de ECMAScript 2023 la forma de obtener este índice era mucho más compleja, y requería algo como:

let indiceUltimoPar = [...numeros].reverse().findIndex(num => num % 2 === 0);
indiceUltimoPar = numeros.length - 1 - indiceUltimoPar;

Ventajas: reduce el código y la lógica innecesaria al buscar el índice del último elemento que cumpla con una condición.

3. Array.prototype.toReversed()

Este método devuelve una nueva copia del array con los elementos en orden invertido, sin modificar el array original.

Sintaxis:

let arrayRevertido = array.toReversed();

Ejemplo:

let revertido = numeros.toReversed();
console.log(revertido); // [6, 5, 4, 3, 2, 1]
console.log(numeros); // [1, 2, 3, 4, 5, 6] (original intacto)

Antes de ECMAScript 2023: Para revertir un array sin modificar el original, los desarrolladores tenían que usar slice() y reverse():

let revertido = numeros.slice().reverse();

Ventajas: proporciona una alternativa directa y más clara para obtener un array revertido sin afectar el original.

4. Array.prototype.toSorted()

Este método devuelve una nueva copia del array ordenada, sin modificar el array original.

Sintaxis:

let arrayOrdenado = array.toSorted(callback);

Ejemplo:

let numerosDesordenados = [4, 2, 8, 5];
let ordenado = numerosDesordenados.toSorted((a, b) => a - b);
console.log(ordenado); // [2, 4, 5, 8]
console.log(numerosDesordenados); // [4, 2, 8, 5] (original intacto)

Antes de ECMAScript 2023: Para lograr esto, se necesitaba usar slice() y luego sort():

let ordenado = numerosDesordenados.slice().sort((a, b) => a - b);

Ventajas: evita modificar accidentalmente el array original, haciendo el código más seguro y predecible.

5. Array.prototype.toSpliced()

Este método devuelve una copia del array, aplicando la operación splice(), pero sin modificar el array original.

Sintaxis:

let nuevoArray = array.toSpliced(inicio, deleteCount, ...elementos);

Ejemplo:

let frutas = ['manzana', 'banana', 'cereza'];
let nuevasFrutas = frutas.toSpliced(1, 1, 'mango');
console.log(nuevasFrutas); // ['manzana', 'mango', 'cereza']
console.log(frutas); // ['manzana', 'banana', 'cereza'] (original intacto)

Antes de ECMAScript 2023: Para evitar modificar el array original, era necesario hacer una copia manual y luego aplicar splice():

let nuevasFrutas = [...frutas];
nuevasFrutas.splice(1, 1, 'mango');

Ventajas: proporciona una forma directa y concisa de trabajar con arrays en JavaScript, sin modificar el original.

Comparación con operaciones anteriores

Antes de ECMAScript 2023, la mayoría de las manipulaciones de arrays requerían utilizar métodos que modificaban el array original o realizar copias manuales utilizando slice() o el operador spread (...). Esto no solo aumentaba la cantidad de código necesario, sino que también incrementaba las posibilidades de errores, especialmente cuando los arrays eran mutados accidentalmente.

Las nuevas operaciones, como toReversed(), toSorted() y toSpliced(), eliminan estos problemas al proporcionar una manera segura de trabajar con arrays inmutables. Esto es especialmente útil en el desarrollo de aplicaciones modernas, donde la inmutabilidad es clave para evitar efectos secundarios no deseados, como en frameworks de frontend (React, por ejemplo).

Ventajas de las nuevas operaciones

    Compatibilidad

    Los arrays en JavaScript son parte fundamental del lenguaje. Pero dado que las operaciones que menciono en esta artículo, fueron introducidas en ECMAScript 2023, la compatibilidad puede ser un tema a considerar en navegadores o entornos más antiguos. Sin embargo, la mayoría de los navegadores modernos y entornos como Node.js ya han implementado estas funcionalidades.

    Es recomendable verificar la compatibilidad de estas características antes de utilizarlas en proyectos de producción o utilizar polyfills para entornos no compatibles.

    En conclusión

    Las nuevas operaciones con arrays en ECMAScript 2023 simplifican tareas comunes y promueven un código más limpio y seguro. Incorporan mejoras necesarias para la manipulación de datos inmutable, haciéndolas ideales para aplicaciones modernas. La transición desde las operaciones anteriores es sencilla y las ventajas, tanto en términos de rendimiento como de claridad, son notables.

    Si estás desarrollando aplicaciones que necesitan mantener la integridad de los datos y quieres mejorar la legibilidad del código, estas nuevas herramientas deberían estar en tu arsenal.

    Si te interesa aprender como trabajar con JavaScript envíame un mensaje.

    Salir de la versión móvil