Saltar al contenido principal
eLearner.app
Módulo 3 · Lección 4 de 412/32 en el curso~10 min
Lecciones del módulo (4/4)

Iterar sobre colecciones

Manipular colecciones casi siempre significa iterar: recorrer los elementos uno a uno y hacer algo con cada uno. En esta lección veremos las sintaxis básicas; en el módulo sobre arrays funcionales (map / filter / reduce) aprenderemos a escribirlas de forma más declarativa.

for…of para arrays

Es el bucle que querrás usar casi siempre para iterar un array: extrae el valor en cada paso.

JS
const colori = ['rosso', 'verde', 'blu'];

for (const c of colori) {
  console.log(c);
}
// 'rosso'
// 'verde'
// 'blu'

Si también necesitas el índice, usa entries():

JS
for (const [i, c] of colori.entries()) {
  console.log(`${i}: ${c}`);
}
// '0: rosso', '1: verde', '2: blu'

for…in para objetos — con precaución

for…in itera las claves (strings) de un objeto:

JS
const utente = { nome: 'Anna', eta: 28 };
for (const k in utente) {
  console.log(`${k} = ${utente[k]}`);
}

Object.keys / values / entries

Son la forma robusta de iterar un objeto. Devuelven un array y, por tanto, se combinan muy bien con for…of:

JS
const utente = { nome: 'Anna', eta: 28 };

Object.keys(utente); // ['nome', 'eta']
Object.values(utente); // ['Anna', 28]
Object.entries(utente); // [['nome', 'Anna'], ['eta', 28]]

for (const [k, v] of Object.entries(utente)) {
  console.log(`${k} → ${v}`);
}

for clásico

Sigue existiendo el for "a la antigua usanza". Lo usarás raramente, pero es útil cuando necesitas un control preciso del índice (saltarse elementos, iterar a la inversa):

JS
for (let i = 0; i < colori.length; i++) {
  console.log(i, colori[i]);
}

// Al contrario
for (let i = colori.length - 1; i >= 0; i--) {
  console.log(colori[i]);
}

Pruébalo tú mismo

Ejercicio#js.m3.l4.e1
Intentos: 0Cargando...

Dado `numbers = [3, 5, 7]`, calcula la suma de todos los elementos (15) iterando con for...of. La última expresión debe evaluar a la suma.

Cargando editor...
Mostrar pista

for (const n of numbers) { sum = sum + n; }

Solución disponible después de 3 intentos

Ejercicio de repaso

Ejercicio#js.m3.l4.e2
Intentos: 0Cargando...

Dado `prices = { mela: 0.4, pera: 0.55, banana: 0.3 }`, devuelve el NÚMERO TOTAL de elementos en el objeto (3) usando Object.keys.

Cargando editor...
Mostrar pista

Object.keys(obj) devuelve un array; .length indica cuántas claves hay.

Solución disponible después de 3 intentos