Sobes.tech
Junior

Kuo skiriasi for...in ir for...of ciklai?

sobes.tech AI

Atsakymas iš AI

Ciklas for...in iteruoja per objekto enumeruojamas savybes (raktus), įskaitant jų prototipo grandinės savybes.

Ciklas for...of iteruoja per iteruojamų objektų (Array, Map, Set, String, arguments ir kt.) reikšmes. Jis neiteruoja per prototipo savybes.

for...in for...of
Iteruoja per Objektų raktus (savybes) Iteruojamų objektų reikšmes
Naudojama su Objektais Masyvais, eilutėmis, Map, Set ir kitais iteruojamais objektais
Prototipas Iteruoja per prototipo savybes Neiteruoja per prototipo savybes
Eilės tvarka Neužtikrinta, ypač ne sveikųjų skaičių raktams Užtikrinta masyvams (pagal indeksą)

Pavyzdys for...in:

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

Pavyzdys for...of:

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

Apskritai, geriau naudoti for...of iteracijai per masyvus ir panašias struktūras, o for...in — per objektų savybes (dažnai kartu su hasOwnProperty išskiriant prototipo savybes).