Vai al contenuto
eLearner.app
Modulo 3 · Lezione 4 di 412/32 nel corso~10 min
Lezioni del modulo (4/4)

Iterare su collezioni

Manipolare le collezioni significa quasi sempre iterare: scorrere gli elementi uno alla volta e fare qualcosa per ciascuno. In questa lezione vediamo le sintassi base; nel modulo sugli array funzionali (map / filter / reduce) impareremo a scriverle più dichiarativamente.

for…of per gli array

È il ciclo che vuoi usare quasi sempre per iterare un array: estrae il valore ad ogni passo.

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

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

Se ti serve anche l'indice, usa entries():

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

for…in per gli oggetti — con cautela

for…in itera le chiavi (stringhe) di un oggetto:

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

Object.keys / values / entries

Sono il modo robusto di iterare un oggetto. Restituiscono array, e quindi si combinano benissimo 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 classico

Esiste ancora il for "vecchia maniera". Lo userai raramente, ma è utile quando hai bisogno di un controllo fine dell'indice (saltare elementi, iterare al contrario):

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]);
}

Prova tu

Esercizio#js.m3.l4.e1
Tentativi: 0Caricamento…

Dato `numbers = [3, 5, 7]`, calcola la somma di tutti gli elementi (15) iterando con for...of. L'ultima espressione deve valutare alla somma.

Caricamento editor…
Mostra suggerimento

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

Soluzione disponibile dopo 3 tentativi

Esercizio di ripasso

Esercizio#js.m3.l4.e2
Tentativi: 0Caricamento…

Dato `prices = { mela: 0.4, pera: 0.55, banana: 0.3 }`, restituisci il NUMERO TOTALE di voci nell'oggetto (3) usando Object.keys.

Caricamento editor…
Mostra suggerimento

Object.keys(obj) restituisce un array; .length dice quante chiavi ci sono.

Soluzione disponibile dopo 3 tentativi