Ebben az oktatóanyagban példák segítségével megismerheti a JavaScript iterátorait és iterable programjait.
JavaScript Iterables és Iterators
A JavaScript protokollt biztosít az adatszerkezetek feletti ismétléshez. Ez a protokoll meghatározza, hogy ezek az adatstruktúrák hogyan vannak iterálva a for… ofhurok használatával.
A protokoll koncepciója felosztható:
- iterálható
 - iterátor
 
Az iterálható protokoll megemlíti, hogy az iterable-nek legyen Symbol.iteratorkulcsa.
JavaScript Iterables
A Symbol.iterator()metódussal rendelkező adatstruktúrákat iterable-nek nevezzük. Például tömbök, húrok, halmazok stb.
JavaScript Iterátorok
Az iterátor olyan objektum, amelyet a Symbol.iterator()módszer visszaad .
Az iterátor protokoll biztosítja az next()iterálható elemek (adatstruktúra) egyes elemeinek elérési módját.
Nézzünk meg egy példát az iterable-eknek Symbol.Iterator()
 const arr = (1, 2 ,3); // calling the Symbol.iterator() method const arrIterator = arr(Symbol.iterator)(); // gives Array Iterator console.log(arrIterator); const str = 'hello'; // calling the Symbol.iterator() method const strIterator = str(Symbol.iterator)(); // gives String Iterator console.log(strIterator);
Kimenet
Array Iterator () StringIterator ()
Itt Symbol.iterator()a tömb és a string metódusának meghívása megadja a megfelelő iterátorokat.
Iterálható az iterable-k révén
A for… ofhurok segítségével iterálhat ezeken az iterálható objektumokon. Az alábbi Symbol.iterator()módszerrel iterálhat :
 const number = ( 1, 2, 3); for (let n of number(Symbol.iterator)()) ( console.log(n); )
Kimenet
1 2 3
Vagy egyszerűen iterálhat a tömbön, így:
 const number = ( 1, 2, 3); for (let n of number) ( console.log(n); )
Itt az iterátor lehetővé teszi, hogy a for… ofhurok egy tömb fölött iteráljon, és minden értéket visszaadjon.
JavaScript next () módszer
Az iterátor objektumnak van egy next()metódusa, amely a sorozat következő elemét adja vissza.
A next()módszer két tulajdonságot tartalmaz: valueés done.
- érték
Avaluetulajdonság bármilyen adattípusú lehet, és a sorozat aktuális értékét képviseli. - kész
Adonetulajdonság egy logikai érték, amely jelzi, hogy az iteráció teljes-e vagy sem. Ha az iteráció nem teljes, akkor adonetulajdonság értékefalse, máskülönben értéketrue. 
Nézzünk meg egy tömb iterable példát:
 const arr = ('h', 'e', 'l', 'l', 'o'); let arrIterator = arr(Symbol.iterator)(); console.log(arrIterator.next()); // (value: "h", done: false) console.log(arrIterator.next()); // (value: "e", done: false) console.log(arrIterator.next()); // (value: "l", done: false) console.log(arrIterator.next()); // (value: "l", done: false) console.log(arrIterator.next()); // (value: "o", done: false) console.log(arrIterator.next()); // (value: undefined, done: true)
next()Többször is felhívhatja az arrIteratorobjektumot.
- A 
next()metódus két tulajdonságú objektumot ad vissza:valueésdone. - Amikor a 
next()módszer a végére ér a sorozat, akkor adonetulajdonság értékefalse. 
Nézzük meg, hogy a for… ofciklus hogyan hajtja végre a fenti programot. Például,
 const arr = ('h', 'e', 'l', 'l', 'o'); for (let i of arr) ( console.log(i); )
Kimenet
Szia
A for… ofciklus pontosan ugyanazt csinálja, mint a fenti program.
A for… ofciklus folyamatosan hívja a next()metódust az iterátoron. Amint eléri done:true, a for… ofhurok véget ér.
Felhasználó által definiált Iterator
Létrehozhat saját iterátort és hívást next()is a következő elem eléréséhez. Például,
 function displayElements(arr) ( // to update the iteration let n = 0; return ( // implementing the next() function next() ( if(n < arr.length) ( return ( value: arr(n++), done: false ) ) return ( value: undefined, done: true ) ) ) ) const arr = ('h', 'e', 'l', 'l', 'o'); const arrIterator = displayElements(arr); console.log(arrIterator.next()); console.log(arrIterator.next()); console.log(arrIterator.next()); console.log(arrIterator.next()); console.log(arrIterator.next()); console.log(arrIterator.next());
Kimenet
(érték: "h", kész: hamis) (érték: "e", kész: hamis) (érték: "l", kész: hamis) (érték: "l", kész: hamis) (érték: "o" , kész: hamis) (érték: nem definiált, kész: igaz)
A fenti programban létrehoztuk saját iterátorunkat. A displayElements()függvény visszatér valueés donetulajdonság.
- A 
next()metódus minden egyes meghívásakor a függvény egyszer végrehajtásra kerül, és megjeleníti egy tömb értékét. - Végül, ha egy tömb összes eleme kimerült, akkor a 
donetulajdonság értéketrue:valueasundefined. 








