Tässä opetusohjelmassa opit JavaScript-iteraattoreista ja iteraaaleista esimerkkien avulla.
JavaScript-itterabilit ja iteraattorit
JavaScript tarjoaa protokollan tietorakenteiden iteroimiseksi. Tämä protokolla määrittää kuinka nämä tietorakenteet toistetaan for… ofsilmukan avulla.
Protokollan käsite voidaan jakaa:
- toistettavissa
- iteraattori
Toistettavassa protokollassa mainitaan, että iteroitavalla pitäisi olla Symbol.iteratoravain.
JavaScript Iterables
Tietorakenteita, joilla on Symbol.iterator()menetelmä, kutsutaan iterableiksi. Esimerkiksi taulukot, merkkijonot, sarjat jne.
JavaScript-iteraattorit
Iteraattori on objekti, jonka Symbol.iterator()menetelmä palauttaa .
next()Iteraattoriprotokolla tarjoaa menetelmän iteroitavan (tietorakenteen) jokaisen elementin käyttämiseksi yksi kerrallaan.
Katsotaanpa esimerkkiä iterableilla 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);
Tuotos
Array Iterator () MerkkijonoIterator ()
Tässä Symbol.iterator()taulukon ja merkkijonon menetelmän kutsuminen palauttaa vastaavat iteraattorit.
Toista iteroitavien kautta
Voit käyttää for… ofsilmukkaa iteroimaan näiden iteroitavien objektien läpi. Voit toistaa tämän Symbol.iterator()menetelmän avulla:
const number = ( 1, 2, 3); for (let n of number(Symbol.iterator)()) ( console.log(n); )
Tuotos
1 2 3
Tai voit yksinkertaisesti toistaa taulukon läpi näin:
const number = ( 1, 2, 3); for (let n of number) ( console.log(n); )
Tässä iteraattori antaa for… ofsilmukan iteroida matriisin yli ja palauttaa jokaisen arvon.
JavaScript seuraava () -menetelmä
Iteraattoriobjektilla on next()menetelmä, joka palauttaa sarjan seuraavan kohteen.
next()Menetelmä sisältää kaksi ominaisuutta: valueja done.
- arvo ominaisuus voi olla mitä tahansa datatyypin ja edustaa nykyisen arvon järjestyksessä.
value - tehty omaisuus on looginen arvo, joka osoittaa, onko toisto on suoritettu loppuun vai ei. Jos iterointi on keskeneräinen, ominaisuus asetetaan arvoon , muuten se asetetaan arvoon .
donedonefalsetrue
Katsotaanpa esimerkkiä taulukon iterableista:
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)
Voit soittaa next()toistuvasti arrIteratorobjektin toistamiseksi .
next()Menetelmä palauttaa objektin kaksi ominaisuudet:valuejadone.- Kun
next()menetelmä on jakson lopussa,doneominaisuudeksi asetetaanfalse.
Katsotaanpa, kuinka for… ofsilmukka suorittaa yllä olevan ohjelman. Esimerkiksi,
const arr = ('h', 'e', 'l', 'l', 'o'); for (let i of arr) ( console.log(i); )
Tuotos
Hei
for… ofSilmukka tekee täsmälleen sama kuin ohjelma edellä.
for… ofSilmukka pitää soittamalla next()menetelmää iteraattori. Kun se saavuttaa done:true, for… ofsilmukka päättyy.
Käyttäjän määrittämä iteraattori
Voit myös luoda oman iteraattorin ja soittaa next()päästäksesi seuraavaan elementtiin. Esimerkiksi,
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());
Tuotos
(arvo: "h", tehty: väärä) (arvo: "e", tehty: väärä) (arvo: "l", tehty: väärä) (arvo: "l", tehty: väärä) (arvo: "o" , tehty: väärä) (arvo: määrittelemätön, tehty: tosi)
Edellä olevassa ohjelmassa olemme luoneet oman iteraattorin. displayElements()Funktio palauttaa valueja doneomaisuutta.
- Joka kerta kun
next()menetelmää kutsutaan, funktio suoritetaan kerran ja näyttää matriisin arvon. - Lopuksi, kun kaikki elementit joukko ovat tyhjiä,
doneominaisuus on asetettutrue, javalueniinundefined.








