Sobes.tech
Junior

Jaka jest różnica między pętlami for...in a for...of?

sobes.tech AI

Odpowiedź od AI

Pętla for...in iteruje po kluczach (właściwościach) enumerowalnych właściwości obiektu, w tym po właściwościach jego łańcucha prototypów.

Pętla for...of iteruje po wartościach obiektów iterowalnych (Array, Map, Set, String, arguments itp.). Nie iteruje po właściwościach prototypu.

for...in for...of
Iteruje po Kluczach (właściwościach) obiektów Wartościach obiektów iterowalnych
Używa się z Obiektami Tablicami, łańcuchami, Map, Set i innymi obiektami iterowalnymi
Prototyp Iteruje po właściwościach prototypu Nie iteruje po właściwościach prototypu
Kolejność iteracji Nie gwarantowana dla kluczy niecałkowitych Gwarantowana dla tablic (według indeksu)

Przykład for...in:

const obj = { a: 1, b: 2 };
for (const key in obj) {
  console.log(key, obj[key]); // Wyświetli: "a 1", "b 2"
}

Przykład for...of:

const arr = [1, 2, 3];
for (const value of arr) {
  console.log(value); // Wyświetli: 1, 2, 3
}

Ogólnie, do iteracji po tablicach i podobnych strukturach lepiej używać for...of, a do iteracji po właściwościach obiektów — for...in (często w połączeniu z hasOwnProperty, aby wykluczyć właściwości prototypu).