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).