Programación
Radzivon Aljovik
Entusiasta de la automatización de bajo código
4 de julio de 2024
La iteración de matrices es un concepto fundamental en JavaScript que permite a los desarrolladores recorrer y manipular elementos dentro de una matriz. JavaScript ofrece una variedad de métodos para iterar sobre matrices, desde bucles tradicionales (while, do...while, for, for...in, for...of) hasta métodos de matriz modernos (forEach, map, filter, reduce, reduceRight). Cada método es adecuado para diferentes tareas, como filtrar, transformar o reducir datos. Los métodos avanzados como flatMap, Array.from, keys, entries y el operador spread ofrecen flexibilidad y funcionalidad adicionales. Dominar estas técnicas permite a los desarrolladores escribir código conciso, eficiente y expresivo para manejar matrices, lo que es esencial para crear aplicaciones JavaScript robustas. Comprender estos métodos también garantiza la compatibilidad con los navegadores modernos, lo que los hace prácticos para el desarrollo web contemporáneo.
Puntos clave: JavaScript ofrece varios métodos para la iteración de matrices, incluidos los bucles tradicionales (while, do...while, for, for...in, for...of) y los métodos de matriz modernos (forEach, map, filter, reduce, reduceRight). Cada método tiene características únicas adecuadas para diferentes casos de uso, desde iteraciones simples hasta transformaciones complejas. Dominar estas técnicas permite a los desarrolladores escribir código eficiente y expresivo para manipular matrices, algo esencial para crear aplicaciones JavaScript potentes. La mayoría de los métodos son compatibles con los navegadores modernos, lo que garantiza una amplia compatibilidad.
Los bucles en JavaScript son estructuras de control que permiten a los desarrolladores ejecutar repetidamente un bloque de código hasta que se cumpla una condición específica. Proporcionan una forma de automatizar tareas repetitivas y procesar matrices o colecciones de datos de manera eficiente. JavaScript ofrece varios tipos de bucles, incluidos while, do...while, for, for...in y for...of, cada uno con su propia sintaxis y casos de uso.
El bucle while que recorre una matriz de objetos de JavaScript ejecuta un bloque de código siempre que una condición especificada se evalúe como verdadera. Es un bucle versátil que se puede utilizar para iterar sobre matrices mediante la gestión manual de la variable de índice. A continuación, se muestra un ejemplo de uso de un bucle while para iterar sobre una matriz:
En este ejemplo, el bucle while continúa ejecutándose mientras el índice i sea menor que la longitud de la matriz de números. El bucle imprime cada elemento en la consola e incrementa la variable de índice.
El bucle do...while es similar al bucle while, pero garantiza que el bloque de código se ejecute al menos una vez antes de verificar la condición. A continuación, se muestra un ejemplo de uso de un bucle de matriz do...while en JavaScript:
En este caso, el bucle imprime cada fruta en la consola e incrementa la variable de índice. El bucle continúa hasta que la condición i < fruits.length se evalúa como falsa.
El bucle for es una estructura de bucle compacta y de uso común en JavaScript. Combina las expresiones de inicialización, condición e incremento/decremento en una sola línea. A continuación, se muestra un ejemplo de uso de un bucle for para iterar sobre una matriz:
El bucle for inicializa la variable de índice i en 0, verifica la condición i < colors.length e incrementa i después de cada iteración. El bucle imprime cada color en la consola.
El bucle for...in se utiliza para iterar sobre las propiedades de un objeto. Cuando se utiliza con matrices, itera sobre los índices de la matriz. A continuación, se muestra un ejemplo:
En este ejemplo, el bucle for...in itera sobre los índices de la matriz persons e imprime cada índice y su valor correspondiente en la consola.
El bucle for...of, introducido en ECMAScript 2015 (ES6), proporciona una forma más concisa y legible de iterar sobre objetos iterables, incluidas las matrices. Accede directamente a los valores de la matriz sin necesidad de una variable de índice. A continuación, se muestra un ejemplo:
javascript
En este caso, el bucle for...of recorre cada elemento de la matriz de números y lo asigna a la variable número. El bucle imprime cada número en la consola.
El método forEach() es un método de matriz integrado que ejecuta una función proporcionada una vez por cada elemento de la matriz. Ofrece un enfoque más expresivo y funcional para la iteración de matrices. A continuación, se muestra un ejemplo:
En este ejemplo, se llama al método forEach() en la matriz de frutas. Toma una función de flecha como argumento, que recibe cada fruta como parámetro y la imprime en la consola.
JavaScript ofrece otros métodos de iteración de matrices que ofrecen potentes capacidades para manipular y transformar matrices. Estos métodos incluyen:
Exploraremos estos métodos con más detalle en las siguientes secciones.
El método forEach() ejecuta una función proporcionada una vez por cada elemento de la matriz. No devuelve una nueva matriz, pero permite realizar una acción en cada elemento. A continuación, se muestran algunos ejemplos:
En este ejemplo, se utiliza el método forEach() para imprimir cada número de la matriz de números en la consola.
En este ejemplo, se utiliza el método forEach() para convertir cada fruta de la matriz de frutas a mayúsculas y colocarla en una nueva matriz upperCaseFruits.
El método map() crea una nueva matriz al llamar a una función proporcionada en cada elemento de la matriz. Devuelve una nueva matriz con los resultados de la llamada a la función para cada elemento. A continuación se muestran algunos ejemplos:
En este ejemplo, se utiliza el método map() para crear una nueva matriz squaredNumbers elevando al cuadrado cada número de la matriz numbers.
En este ejemplo, se utiliza el método map() para extraer la propiedad de nombre de cada objeto en la matriz persons y crear una nueva matriz names que contiene solo los nombres.
El método filter() crea una nueva matriz con todos los elementos que pasan la prueba implementada por la función proporcionada. Devuelve una nueva matriz que contiene los elementos que satisfacen la condición. A continuación se muestran un par de ejemplos:
En este ejemplo, se utiliza el método filter() para crear una nueva matriz evenNumbers filtrando la matriz de números para incluir solo números pares.
En este ejemplo, se utiliza el método filter() para crear una nueva matriz adultPersons filtrando la matriz persons para incluir solo personas que tengan 18 años o más.
El método reduce() ejecuta una función reductora en cada elemento de la matriz, lo que genera un único valor de salida. Toma un acumulador y el elemento actual como argumentos y devuelve el acumulador para la siguiente iteración. A continuación, se muestran algunos ejemplos:
En este ejemplo, se utiliza el método reduce() para calcular la suma de todos los números de la matriz numbers. El valor inicial del acumulador se establece en 0.
En este ejemplo, se utiliza el método reduce() para concatenar todas las palabras de la matriz de palabras en una sola oración. El acumulador se inicializa con una cadena vacía.
En este ejemplo, se utiliza el método reduce() para calcular la edad total de todas las personas de la matriz persons. El acumulador se inicializa en 0.
El método reduceRight() es similar al método reduce(), pero ejecuta la función reductora de derecha a izquierda (desde el último elemento hasta el primero). A continuación se muestran algunos ejemplos:
En este ejemplo, se utiliza el método reduceRight() para calcular la suma de todos los números en la matriz de números, comenzando desde el último elemento y avanzando hacia el primer elemento.
En este ejemplo, se utiliza el método reduceRight() para concatenar todas las palabras de la matriz de palabras en una sola oración, comenzando por la última palabra y avanzando hacia la primera.
El método every() prueba si todos los elementos de la matriz pasan la prueba implementada por la función proporcionada. Devuelve true si la función devuelve true para todos los elementos y false en caso contrario. A continuación se muestran un par de ejemplos:
En este ejemplo, se utiliza el método every() para comprobar si todos los números de la matriz numbers son pares. Devuelve true porque todos los números cumplen la condición.
En este ejemplo, se utiliza el método every() para comprobar si todas las personas de la matriz persons son adultas (edad mayor o igual a 18). Devuelve true ya que todas las personas cumplen la condición.
El método some() prueba si al menos un elemento de la matriz pasa la prueba implementada por la función proporcionada. Devuelve verdadero si la función devuelve verdadero para al menos un elemento y falso en caso contrario. A continuación, se muestra un ejemplo:
En este ejemplo, se utiliza el método some() para comprobar si hay al menos un número par en la matriz de números. Devuelve verdadero porque la matriz contiene números pares.
JavaScript proporciona métodos de iteración de matriz adicionales que ofrecen funciones más avanzadas. Estos métodos incluyen:
Exploremos estos métodos con más detalle.
El método flatMap() primero asigna cada elemento de una matriz mediante una función de asignación y luego aplana el resultado en una nueva matriz. Combina la funcionalidad de map() y flat() en un solo método. A continuación, se muestra un ejemplo:
En este ejemplo, se utiliza el método flatMap() para asignar cada número de la matriz de números a una matriz que contiene el número y su doble, y luego aplanar las matrices resultantes en una sola matriz.
El método flatMap() es compatible con navegadores modernos, incluidos Chrome 69+, Edge 79+, Firefox 62+, Safari 12+ y Opera 56+.
El método Array.from() crea una nueva matriz a partir de un objeto iterable o similar a una matriz. Permite convertir objetos que tienen una propiedad de longitud y elementos indexados en una matriz. A continuación, se muestra un ejemplo:
Ejemplo de matriz en JavaScript:
En este ejemplo, se utiliza el método Array.from() para convertir un objeto similar a una matriz en una matriz real.
El método Array.from() es compatible con los navegadores modernos, incluidos Chrome 51+, Edge 15+, Firefox 54+, Safari 10+ y Opera 38+. No es compatible con Internet Explorer.
El método keys() devuelve un nuevo objeto Array Iterator que contiene las claves de cada índice de la matriz. Permite iterar sobre los índices de la matriz. A continuación, se muestra un ejemplo:
En este ejemplo, se utiliza el método keys() para obtener un iterador que contiene las claves (índices) de la matriz fruits. Luego, se utiliza el bucle for...of para iterar sobre las claves e imprimirlas.
El método keys() es compatible con los navegadores modernos, incluidos Chrome 51+, Edge 15+, Firefox 54+, Safari 10+ y Opera 38+. No es compatible con Internet Explorer.
El método entries() devuelve un nuevo objeto Array Iterator que contiene pares clave-valor para cada índice de la matriz. Cada entrada es una matriz en formato [índice, elemento]. A continuación, se muestra un ejemplo:
Ejemplo de matriz en JavaScript:
En este ejemplo, se utiliza el método `entries()` para obtener un iterador que contiene pares clave-valor para cada índice de la matriz `fruits`. Luego, se utiliza el bucle `for...of` para desestructurar cada entrada en las variables `index` y `element` e imprimirlas.
El método `with()` es una nueva incorporación introducida en ECMAScript 2023 (ES2023). Permite crear una nueva matriz con un elemento especificado reemplazado por un elemento nuevo. Proporciona una forma de actualizar un elemento en una matriz sin modificar la matriz original. A continuación, se muestra un ejemplo:
En este ejemplo, se utiliza el método with() para crear una nueva matriz updatedNumbers donde el elemento en el índice 2 se reemplaza con el valor 10. La matriz de números original permanece sin cambios.
El operador de expansión (...) permite expandir una matriz en elementos individuales. Se puede utilizar para concatenar matrices, pasar matrices como argumentos a funciones o crear nuevas matrices con elementos existentes. A continuación, se muestra un ejemplo:
En este ejemplo, se utiliza el operador de propagación para concatenar las matrices fruits y moreFruits en una nueva matriz allFruits.
El operador spread es compatible con los navegadores modernos, incluidos Chrome 51+, Edge 15+, Firefox 54+, Safari 10+ y Opera 38+. No es compatible con Internet Explorer.
JavaScript ofrece una amplia gama de métodos de iteración de matrices que permiten a los desarrolladores realizar bucles en matrices, manipular elementos y crear nuevas matrices en función de condiciones específicas. En este artículo, exploramos varios métodos, incluidos bucles tradicionales como while, do...while, for, for...in y for...of, así como métodos de matriz modernos como forEach(), map(), filter(), reduce(), every(), some() y más.
Comprender y aprovechar estas técnicas de iteración de matrices permite a los desarrolladores escribir código conciso, eficiente y expresivo al trabajar con matrices para each en JavaScript. Al dominar estos métodos, puede realizar operaciones complejas en matrices con facilidad y crear potentes aplicaciones de bucle de matrices en JavaScript.
El bucle for...of se utiliza para iterar sobre los valores de un objeto iterable, como una matriz, mientras que el bucle for...in se utiliza para iterar sobre las propiedades enumerables de un objeto, incluidos los índices de una matriz.
Utilice map() cuando desee crear una nueva matriz transformando cada elemento de una matriz existente. Utilice forEach() cuando desee realizar una acción en cada elemento de una matriz sin crear una nueva matriz.
Puede utilizar el método reverse() para invertir el orden de los elementos en una matriz y luego iterar sobre la matriz invertida utilizando cualquiera de los métodos de iteración analizados en este artículo.
Puede utilizar la sentencia break para salir de una matriz de bucle en JavaScript de forma prematura. Cuando se encuentra dentro de un bucle, break finaliza inmediatamente el bucle y transfiere el control a la siguiente sentencia después del bucle.
Aplicación uno + Aplicación dos