Junior
Mis vahe on for...in ja for...of tsüklitel?
sobes.tech AI
Vastus AI-lt
Tsükkel for...in iteratsioonib objekti kõigi enumeratiivsete omaduste (võtmed) üle, kaasa arvatud selle prototüüpliini omadused.
Tsükkel for...of iteratsioonib iteratiivsete objektide (Array, Map, Set, String, arguments jms) väärtuste üle. See ei iteratsiooni prototüüpli omaduste üle.
for...in |
for...of |
|
|---|---|---|
| Iteratsioonib | Objektide võtmed (omadused) | Iteratiivsete objektide väärtused |
| Kasutatakse koos | Objektidega | Massiivide, stringide, Map, Set ja teiste iteratiivsete objektidega |
| Prototüüp | Iteratsioon prototüüpli omaduste üle | Ei iteratsiooni prototüüpli omaduste üle |
| Järjekord | Ei ole garanteeritud, eriti mitte-integer võtmete puhul | Garantii massiividele (indeks järgi) |
Näide for...in:
const obj = { a: 1, b: 2 };
for (const key in obj) {
console.log(key, obj[key]); // Väljund: "a 1", "b 2"
}
Näide for...of:
const arr = [1, 2, 3];
for (const value of arr) {
console.log(value); // Väljund: 1, 2, 3
}
Üldiselt on parem kasutada for...of massiivide ja sarnaste struktuuride läbimiseks ning for...in objekti omaduste läbimiseks (tihti koos hasOwnProperty-ga, et välistada prototüüpli omadused).