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