Apelurile iteratorului în JavaScript
Fiecare apel succesiv al iteratorului trebuie să returneze un obiect cu o structură specială. Să o analizăm. Să presupunem că avem un array:
let arr = [1, 2, 3];
Obținem iteratorul array-ului într-o variabilă:
let iter = arr[Symbol.iterator]();
Acum în această variabilă este conținut un obiect
cu metoda next. Această metodă va returna
un obiect cu cheia value, conținând
valoarea elementului, și cheia done,
conținând informația despre dacă s-a terminat
iterarea sau nu:
console.log( iter.next() ); // {value: 1, done: false}
Apelul succesiv al metodei next
va afișa de fiecare dată următorul
element:
console.log( iter.next() ); // {value: 1, done: false}
console.log( iter.next() ); // {value: 2, done: false}
console.log( iter.next() ); // {value: 3, done: false}
Iar de îndată ce elementele se vor termina, vom vedea următoarele valori:
console.log( iter.next() ); // {value: undefined, done: true}
Obțineți iteratorul colecției Map.
Apelați-l succesiv,
până când elementele colecției nu se vor termina.
Obțineți iteratorul colecției NodeList.
Apelați-l succesiv,
până când elementele colecției nu se vor termina.
Obțineți iteratorul colecției HTMLCollection.
Apelați-l succesiv,
până când elementele colecției nu se vor termina.