Sobes.tech
Junior

Kāda ir atšķirība starp for...in un for...of cikliem?

sobes.tech AI

Atbilde no AI

for...in cikls iterē pār objekta enumerējamajām īpašībām (atslēgām), ieskaitot to prototipa ķēdē esošās īpašības.

for...of cikls iterē pār iterējamiem objektiem (Array, Map, Set, String, arguments utt.) vērtībām. Tas neiterē pār prototipa īpašībām.

for...in for...of
Iterē par Objekta atslēgām (īpašībām) Iterējamo objektu vērtībām
Lieto ar Objekti Masīviem, virknes, Map, Set un citiem iterējamiem objektiem
Prototips Iterē pār prototipa īpašībām Neiterē pār prototipa īpašībām
Secība Nav garantēta, īpaši ar neveselajiem atslēgām Garantēta masīviem (pa indeksu)

for...in piemērs:

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

for...of piemērs:

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

Vispārīgi, labāk ir izmantot for...of iterācijai pār masīviem un līdzīgām struktūrām, bet for...in — pār objekta īpašībām (bieži kopā ar hasOwnProperty, lai izslēgtu prototipa īpašības).