Sobes.tech
Junior

Jaký je rozdíl mezi cykly for...in a for...of?

sobes.tech AI

Odpověď od AI

Smyčka for...in prochází klíče (vlastnosti) enumerovatelných vlastností objektu, včetně vlastností v jeho řetězci prototypů.

Smyčka for...of prochází hodnoty iterovatelných objektů (Array, Map, Set, String, arguments atd.). Neprochází vlastnosti prototypu.

for...in for...of
Prochází Klíče (vlastnosti) objektu Hodnoty iterovatelných objektů
Používá se s Objekty Pole, řetězce, Map, Set a další iterovatelné objekty
Prototyp Prochází vlastnosti prototypu Neprochází vlastnosti prototypu
Pořadí průchodu Není garantováno pro necelá čísla klíčů Garantováno pro pole (podle indexu)

Příklad for...in:

const obj = { a: 1, b: 2 };
for (const key in obj) {
  console.log(key, obj[key]); // Vypíše: "a 1", "b 2"
}

Příklad for...of:

const arr = [1, 2, 3];
for (const value of arr) {
  console.log(value); // Vypíše: 1, 2, 3
}

Obecně je vhodnější používat for...of pro procházení polí a podobných struktur, a for...in pro procházení vlastností objektů (často ve spojení s hasOwnProperty, aby se vyloučily vlastnosti prototypu).