Przejdź do głównej treści
eLearner.app
Moduł 3 · Lekcja 4 z 412/32 w kursie~10 min
Lekcje modułu (4/4)

Iteracja po kolekcjach

Manipulowanie kolekcjami niemal zawsze oznacza iterację: przechodzenie przez elementy jeden po drugim i wykonywanie określonej operacji na każdym z nich. W tej lekcji poznamy podstawowe składnie; w module poświęconym funkcjonalnym metodom tablicowym (map / filter / reduce) nauczymy się zapisywać je bardziej deklaratywnie.

for…of dla tablic

Jest to pętla, której będziesz używać niemal zawsze do iteracji po tablicy: na każdym kroku wyodrębnia ona wartość.

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

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

Jeśli potrzebujesz również indeksu, użyj metody entries():

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

for…in dla obiektów — ostrożnie

Pętla for…in iteruje po kluczach (stringach) obiektu:

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

Object.keys / values / entries

Są one solidnym i bezpiecznym sposobem na iterację po obiekcie. Zwracają tablice, więc świetnie łączą się z pętlą 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}`);
}

Klasyczna pętla for

Klasyczna pętla for „w starym stylu” nadal istnieje. Będziesz jej używać rzadko, ale jest przydatna, gdy potrzebujesz dokładnej kontroli nad indeksem (pomijanie elementów, iteracja od końca):

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

Spróbuj sam

Ćwiczenie#js.m3.l4.e1
Próby: 0Ładowanie...

Dla tablicy `numbers = [3, 5, 7]`, oblicz sumę wszystkich elementów (15) za pomocą iteracji pętlą for...of. Ostatnie wyrażenie powinno dać wynik sumy.

Ładowanie edytora...
Pokaż wskazówkę

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

Rozwiązanie dostępne po 3 próbach

Ćwiczenie powtórzeniowe

Ćwiczenie#js.m3.l4.e2
Próby: 0Ładowanie...

Dla obiektu `prices = { mela: 0.4, pera: 0.55, banana: 0.3 }`, zwróć CAŁKOWITĄ LICZBĘ pozycji w obiekcie (3) przy użyciu Object.keys.

Ładowanie edytora...
Pokaż wskazówkę

Object.keys(obj) zwraca tablicę; właściwość .length mówi, ile kluczy się w niej znajduje.

Rozwiązanie dostępne po 3 próbach