Skip to content

Latest commit

 

History

History
264 lines (172 loc) · 11.6 KB

03-iterando-arrays.md

File metadata and controls

264 lines (172 loc) · 11.6 KB

Iterando arreglos en JavaScript

Iterando arreglos en JavaScript En JavaScript, es muy común trabajar con arreglos y recorrerlos para realizar alguna tarea específica, como mostrar su contenido en la pantalla, realizar cálculos, filtrar elementos, etc.

Para iterar un arreglo en JavaScript, podemos usar varios métodos, como for, for...of, forEach, map, filter, reduce, etc. En este tutorial, veremos algunos ejemplos de cómo utilizar estos métodos.

Iterando un arreglo con for

El método for es el más básico y común para iterar un arreglo en JavaScript. La sintaxis es la siguiente:

for (var i = 0; i < arreglo.length; i++) {
  // código a ejecutar en cada iteración
}

Aquí, i es el índice del arreglo que se va a iterar, arreglo.length es la cantidad de elementos del arreglo, y código a ejecutar en cada iteración es el bloque de código que se ejecutará en cada vuelta del ciclo.

Por ejemplo, supongamos que tenemos un arreglo de números y queremos sumarlos todos. Podemos utilizar el método for de la siguiente manera:

var numeros = [1, 2, 3, 4, 5];
var suma = 0;

for (var i = 0; i < numeros.length; i++) {
  suma += numeros[i];
}

console.log("La suma de los números es:", suma);

En este ejemplo, el ciclo itera el arreglo numeros y va sumando cada uno de los elementos. La variable suma guarda el resultado final, que se muestra en la consola con console.log().

Iterando un arreglo con for...of

El método for...of es una forma más moderna y sencilla de iterar un arreglo en JavaScript. La sintaxis es la siguiente:

for (var elemento of arreglo) {
  // código a ejecutar en cada iteración
}

Aquí, elemento es el valor de cada elemento del arreglo, y código a ejecutar en cada iteración es el bloque de código que se ejecutará en cada vuelta del ciclo.

Por ejemplo, supongamos que queremos mostrar en la consola todos los nombres de un arreglo. Podemos utilizar el método for...of de la siguiente manera:

var nombres = ["Juan", "María", "Pedro", "Ana"];

for (var nombre of nombres) {
  console.log(nombre);
}

En este ejemplo, el ciclo itera el arreglo nombres y muestra cada uno de los elementos en la consola con console.log().

Iterando un arreglo con forEach

El método forEach es otro método común para iterar un arreglo en JavaScript. La sintaxis es la siguiente:

arreglo.forEach(function(elemento, indice) {
  // código a ejecutar en cada iteración
});

Aquí, elemento es el valor de cada elemento del arreglo, indice es el índice de cada elemento, y código a ejecutar en cada iteración es el bloque de código que se ejecutará en cada vuelta del ciclo.

Por ejemplo, supongamos que queremos mostrar en la consola todos los nombres de un arreglo, junto con su índice. Podemos utilizar el método forEach de la siguiente manera:

var nombres = ["Juan", "María", "Pedro", "Ana"];

nombres.forEach(function(nombre, indice) {
  console.log(indice, nombre);
});

En este ejemplo, el ciclo itera el arreglo nombres y muestra cada uno de los elementos en la consola con console.log().

Iterando un arreglo con map

El método map() es similar al método forEach(), pero en lugar de realizar una acción en cada elemento del arreglo, el método map() crea un nuevo arreglo con los resultados de aplicar una función a cada elemento del arreglo original.

La sintaxis del método map() es la siguiente:

var nuevoArreglo = array.map(function(elemento) {
  // Función que devuelve un nuevo valor para el elemento
});

Este método llama a la función especificada para cada elemento del arreglo array. La función especificada debe tomar un parámetro, que representa el valor actual del elemento del arreglo, y debe devolver un nuevo valor para ese elemento.

Por ejemplo, si queremos crear un nuevo arreglo dobleNumeros que contenga los valores del arreglo numeros multiplicados por dos, podemos hacer lo siguiente:

var numeros = [1, 2, 3, 4, 5];

var dobleNumeros = numeros.map(function(numero) {
  return numero * 2;
});

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

En este ejemplo, el método map() llama a la función especificada para cada elemento del arreglo numeros. La función especificada multiplica el valor del elemento por dos y devuelve el resultado.

Iterando un arreglo con filter

El método filter() crea un nuevo arreglo con todos los elementos que cumplan con la condición implementada por la función dada.

La sintaxis del método filter() es la siguiente:

var nuevoArreglo = array.filter(function(elemento) {
  // Función que devuelve true o false
});

Este método llama a la función especificada para cada elemento del arreglo array. La función especificada debe tomar un parámetro, que representa el valor actual del elemento del arreglo, y debe devolver un valor booleano que indica si el elemento debe incluirse en el nuevo arreglo.

Por ejemplo, si queremos crear un nuevo arreglo pares que contenga solo los números pares del arreglo numeros, podemos hacer lo siguiente:

var numeros = [1, 2, 3, 4, 5];

var pares = numeros.filter(function(numero) {
  return numero % 2 === 0;
});

console.log(pares); // [2, 4]

En este ejemplo, el método filter() llama a la función especificada para cada elemento del arreglo numeros. La función especificada verifica si el valor del elemento es par, y devuelve true o false según corresponda.

Iterando un arreglo con find

El método find() devuelve el primer elemento del arreglo que cumpla con la condición implementada por la función dada.

La sintaxis del método find() es la siguiente:

var elemento = array.find(function(elemento) {
  // Función que devuelve true o false
});

Este método llama a la función especificada para cada elemento del arreglo array. La función especificada debe tomar un parámetro, que representa el valor actual del elemento del arreglo, y debe devolver un valor booleano que indica si el elemento cumple con la condición.

Por ejemplo, si queremos encontrar el primer número par del arreglo numeros, podemos hacer lo siguiente:

var numeros = [1, 2, 3, 4, 5];

var primerPar = numeros.find(function(numero) {
  return numero % 2 === 0;
});

console.log(primerPar); // 2

En este ejemplo, el método find() llama a la función especificada para cada elemento del arreglo numeros. La función especificada verifica si el valor del elemento es par, y devuelve true o false según corresponda.

Iterando un arreglo con reduce

El método reduce() aplica una función a un acumulador y a cada valor de un arreglo (de izquierda a derecha) para reducirlo a un único valor.

La sintaxis del método reduce() es la siguiente:

var valorFinal = array.reduce(function(acumulador, elemento) {
  // Función que devuelve el nuevo valor del acumulador
}, valorInicial);

Este método llama a la función especificada para cada elemento del arreglo array. La función especificada debe tomar dos parámetros, que representan el valor actual del acumulador y el valor actual del elemento del arreglo, y debe devolver el nuevo valor del acumulador.

Por ejemplo, si queremos sumar todos los números del arreglo numeros, podemos hacer lo siguiente:

var numeros = [1, 2, 3, 4, 5];

var suma = numeros.reduce(function(acumulador, numero) {
  return acumulador + numero;
}, 0);

console.log(suma); // 15

En este ejemplo, el método reduce() llama a la función especificada para cada elemento del arreglo numeros. La función especificada suma el valor del elemento al valor del acumulador, y devuelve el nuevo valor del acumulador.

Iterando un arreglo con every

El método every() comprueba si todos los elementos del arreglo cumplen con la condición implementada por la función dada.

La sintaxis del método every() es la siguiente:

var resultado = array.every(function(elemento) {
  // Función que devuelve true o false
});

Este método llama a la función especificada para cada elemento del arreglo array. La función especificada debe tomar un parámetro, que representa el valor actual del elemento del arreglo, y debe devolver un valor booleano que indica si el elemento cumple con la condición.

Por ejemplo, si queremos verificar si todos los números del arreglo numeros son pares, podemos hacer lo siguiente:

var numeros = [2, 4, 6, 8, 10];

var todosPares = numeros.every(function(numero) {
  return numero % 2 === 0;
});

console.log(todosPares); // true

En este ejemplo, el método every() llama a la función especificada para cada elemento del arreglo numeros. La función especificada verifica si el valor del elemento es par, y devuelve true o false según corresponda.

Iterando un arreglo con some

El método some() comprueba si al menos un elemento del arreglo cumple con la condición implementada por la función dada.

La sintaxis del método some() es la siguiente:

var resultado = array.some(function(elemento) {
  // Función que devuelve true o false
});

Este método llama a la función especificada para cada elemento del arreglo array. La función especificada debe tomar un parámetro, que representa el valor actual del elemento del arreglo, y debe devolver un valor booleano que indica si el elemento cumple con la condición.

Por ejemplo, si queremos verificar si al menos un número del arreglo numeros es par, podemos hacer lo siguiente:

var numeros = [1, 3, 5, 7, 9];

var algunPar = numeros.some(function(numero) {
  return numero % 2 === 0;
});

console.log(algunPar); // false

En este ejemplo, el método some() llama a la función especificada para cada elemento del arreglo numeros. La función especificada verifica si el valor del elemento es par, y devuelve true o false según corresponda.

En conclusión, los métodos map(), filter(), find(), reduce(), every(), some() son muy útiles para iterar un arreglo y realizar operaciones sobre sus elementos. Si bien no son los únicos métodos que nos permiten iterar un arreglo, son los métodos más utilizados.

Buenas prácticas

  • Utilizar métodos de array como forEach(), map(), filter(), reduce(), etc. en lugar de bucles for. Estos métodos son más legibles y menos propensos a errores.
  • Ser cuidadoso al utilizar la indexación de array (array[i]) dentro de un bucle. Asegurarse de que el índice sea válido y de que no se produzca un desbordamiento o subdesbordamiento.
  • Utilizar nombres descriptivos y legibles para las variables del bucle y para los elementos del array. Esto hace que el código sea más fácil de entender y depurar.
  • Utilizar el método Array.isArray() para verificar si un valor es un array antes de iterar sobre él. Esto es más seguro que utilizar la comprobación de tipo typeof.
  • Utilizar la sintaxis de desestructuración para acceder a los elementos de un array en lugar de utilizar la indexación de array. Esto hace que el código sea más legible y menos propenso a errores.
  • Evitar la mutación directa de los elementos del array dentro del bucle, especialmente cuando se trata de arrays anidados. En su lugar, utilizar métodos de array que no mutan el array original, como map(), filter(), reduce(), etc.
  • Utilizar la declaración de const en lugar de let para declarar la variable del bucle si no se va a modificar dentro del bucle.

Siguiendo estas buenas prácticas al iterar con arrays en JavaScript, podemos escribir código más legible, eficiente y menos propenso a errores sutiles.