Sobes.tech
Junior

Care este diferența dintre buclele for...in și for...of?

sobes.tech AI

Răspuns de la AI

Bucla for...in iterează peste cheile (proprietățile) enumerable ale obiectului, inclusiv cele din lanțul său de prototipuri.

Bucla for...of iterează peste valorile obiectelor iterabile (Array, Map, Set, String, arguments etc.). Nu iterează peste proprietățile prototipului.

for...in for...of
Iterează pe Chei (proprietăți) ale obiectelor Valori ale obiectelor iterabile
Se folosește cu Obiecte Arrays, stringuri, Map, Set și alte obiecte iterabile
Prototip Iterează pe proprietățile prototipului Nu iterează pe proprietățile prototipului
Ordinea de parcurgere Nu este garantată pentru chei non-integer Este garantată pentru array-uri (după index)

Exemplu for...in:

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

Exemplu for...of:

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

În general, pentru parcurgerea array-urilor și a structurilor similare, este preferabil să folosiți for...of, iar pentru parcurgerea proprietăților obiectelor — for...in (adesea în combinație cu hasOwnProperty pentru a exclude proprietățile din prototip).