Hva er iteratorer i JavaScript

Hva er iteratorer i JavaScript
JavaScript tilbyr flere måter å iterere gjennom en samling av objektverdier som løkker. derimot, Iteratorer blir introdusert i JavaScript 1.7, som gir en mekanisme for å tilpasse oppførselen til for hver og for i løkker og integrerer iterasjonsbegrepet i kjernespråket.

Hvis du trenger å legge innfødt iterativ funksjonalitet til en godt innkapslet og tilpasset datastruktur, bør du bruke JavaScript Iterators. Det kan betraktes som en mer elegant måte å standardisere dine tilpassede objekter.

Denne oppskrivningen vil diskutere iteratorer i JavaScript. Vi vil også demonstrere bruken av iteratorer, iterables, neste () metode og brukerdefinerte iteratorer. Så la oss starte!

Iterasjon i JavaScript

I JavaScript, Iterasjon er en prosedyre der en samling av strukturer eller instruksjoner gjentas i en sekvens for et forhåndsbestemt antall ganger eller til den ekstra tilstanden er sann. Du kan bruke løkker for iterasjon over det spesifiserte settet med instruksjoner.

For eksempel har vi erklært en matrise "teller”Og med hjelp av“for ... av”Loop, vi vil iterere over den spesifiserte matrisen:

const telling = [1, 2, 3];
for (la x av telling)
konsoll.logg (x);

Som et resultat av det vil hver verdi bli returnert og vist som utgang:

La oss nå sjekke metoden for itering over et JavaScript -objekt. For dette formålet vil vi for det første erklære et objekt som heter “ansatt”Og bruk deretter for ... av Loop for itering over sine egenskaper:

const ansatt = navn: 'Alex', betegnelse: 'manager';
for (const rekvisitt for ansatt)
konsoll.logg (prop);

Som du kan se, viste utgangen fra den ovennevnte koden en "Typeerror”Melding som sier at“ansatt”Objekt er ikke iterable. Hvorfor skjer det? Vi har møtt typenerror fordi for ... av loop Krever et iterable objekt for å iterere over objektets egenskaper.

For å håndtere dagens situasjon, kan du bruke JavaScript -iterasjonsprotokollen, som vil hjelpe deg med å gjøre et objekt iterable for iterasjon over dens egenskaper.

JavaScript Iteration Protocol

JavaScript gir en iterasjonsprotokoll for itering over objekter. Denne protokollen spesifiserer prosedyren for iterasjon ved å bruke “for ... av ” Løkke. JavaScript -iteratorer er delt inn i to komponenter: “Iterables”Og“Iteratorer”:

  • Iterables: Iterables er objektene som implementerer “iterator ()”Iterasjonsmetode i.e. matrise eller streng.
  • Iteratorer: Objektet som ble returnert av “iterator ()”Metode er kjent som“Iterator“. Etter å ha fått iteratoren, kan du bruke "Neste ()”Metode for sekvensielt å få tilgang til iterable elementer.

Det kan være vanskelig for deg å forstå bruken av disse metodene på et øyeblikk, så vi vil sekvensielt gå gjennom hver av dem i de undergitte seksjonene.

Neste () Metode i JavaScript

Neste ()”Er en iteratorobjektmetode som påberopes for å returnere neste verdi i iterasjonssekvensen. Denne metoden omfatter følgende to egenskaper:

  • verdi”Eiendom representerer gjeldende verdi i iterasjonssekvensen, og den kan være av hvilken som helst datatype.
  • Ferdig”Eiendom brukes til å representere iterasjonsstatusen, hvor“falsk”Betyr at iterasjonen ikke er fullstendig og“ekte”Indikerer at iterasjonsprosessen er fullført.

La oss definere en tilpasset iterator i JavaScript og få tilgang til elementene i en matrise sekvensielt ved å bruke Next () -metoden.

Opprette brukerdefinert iterator i JavaScript

JavaScript lar deg opprette en brukerdefinert iterator og påkalle "Neste ()”Metode for tilgang til elementene i det iterable objektet.

Her har vi definert “ShowElement ()”Metode og den vil returnere“verdi”Og“Ferdig”Eiendom til det iterable objektet som er akseptert som et argument:

Funksjonshowelements (ARR)
La nummer = 0;
komme tilbake
neste ()
hvis (nummer < array.length)
komme tilbake
Verdi: Array [nummer ++],
FORSLAG: FALSE

komme tilbake
Verdi: udefinert,
FORSLAG: SANN


I neste trinn vil vi lage en "Array”Og passerer den deretter til“ShowElement ()”Metode som et argument. Og så "Showelements ()”Metoden vil returnere et iterable objekt, som vi vil lagre i“Arriterator”:

const array = ['l', 'i', 'n', 'u', 'x'];
const arriterator = showelements (matrise);

Nå, hver gang når "Neste ()”Metoden påberopes med“Arriterator”, Vil den vise verdiene til arrayelement i en sekvens med de definerte“verdi”Og“Ferdig" egenskaper:

konsoll.Logg (Arriterator.neste ());
konsoll.Logg (Arriterator.neste ());
konsoll.Logg (Arriterator.neste ());
konsoll.Logg (Arriterator.neste ());
konsoll.Logg (Arriterator.neste ());
konsoll.Logg (Arriterator.neste ());

Når alle elementene er iterert, "verdi”Eiendomsverdi vil bli satt til“udefinert”, Med“Ferdig”Eiendom som“ekte”:

Den ovennevnte utgangen betyr at vi har opprettet og utført en brukerdefinert iterator i vårt program ved å bruke Next () -metoden. La oss nå forstå begrepet iterables og ha en klar og dyp forståelse av Symbol.iterator () I JavaScript

Eksempel: Opprette iteratorer fra iterables ved hjelp av symbol.Iterator () -metode i JavaScript
I dette eksemplet vil vi for det første erklære en rekke med følgende tre verdier:

const arr1 = ['l', 'i', 'n', 'u', 'x'];

Deretter vil vi påkalle "Symbol.iterator ()”Metode som vil returnere et iterable objekt og“Arriterator”Vil lagre verdien:

const arriterator = arr1 [symbol.iterator] ();
konsoll.logg (arriterator);

Utførelse av det ovennevnte programmet vil sende ut array-iteratorene:

Eksempel: Bruke neste () -metode over et iterable objekt i JavaScript
Dette eksemplet vil demonstrere bruken av “Neste ()”Metode for å iterere over et iterable objekt. For å gjøre det, for det første, vil vi lage en “Array”Og påkalle deretter“Symbol.iterator ()”Metode for å returnere et iterable objekt:

const array = ['l', 'i', 'n', 'u', 'x'];
La Arriterator = Array [symbol.iterator] ();

Påkalle “Neste ()”Vil også returnere et objekt som har“verdi”Og“Ferdig”Eiendomsverdier:

konsoll.Logg (Arriterator.neste ());
konsoll.Logg (Arriterator.neste ());
konsoll.Logg (Arriterator.neste ());
konsoll.Logg (Arriterator.neste ());
konsoll.Logg (Arriterator.neste ());
konsoll.Logg (Arriterator.neste ());

På slutten av iterasjonssekvensen, "Ferdig”Eiendom til“Neste ()”Metoden er satt til“falsk”:

Eksempel: iterere gjennom iterables med mens du er sløyfe i JavaScript
De symbol.iterator () metoden kalles automatisk av for ... av loop. Hvis du vil påkalle det manuelt, kan du bruke "samtidig som”Loop for iterating over det spesifiserte iterable objektet.

For eksempel, i det undergitte eksemplet, vil vi bruke "samtidig som”Loop for å iterere over de iterable objektene som er returnert av“Symbol.iterator ()”Metode:

const array = ['l', 'i', 'n', 'u', 'x'];
La Arriterator = Array [symbol.iterator] ();
La tekst = ""
mens (sant)
Const Resultat = Arriterator.neste ();
hvis (resultat.gjort) pause;
konsoll.Logg ("Verdi:"+ Resultat.verdi + "gjort:" + resultat.gjort);

Her viser utgangen det returnerte resultatet med “verdi”Og“Ferdig”Iteratoregenskaper:

Se på følgende diagram for å forstå forholdet mellom iterabler, neste () metode og iteratorer i JavaScript:

Det handlet om grunnleggende bruk av iteratorer i JavaScript. Du kan utforske det videre i henhold til dine preferanser.

Konklusjon

Iteratorer i JavaScript brukes til å sløyfe over en sekvens av objektverdier som returneres av symbolet.Iterator () -metode. Denne prosessen innebærer også implementering av neste () -metode som returnerer et objekt med verdien og utførte egenskaper, hvor "verdi”Representerer den gjeldende sekvensverdien og“Ferdig”Bestemmer om iterasjonen er fullført eller ikke. Denne oppskrivningen diskuterte JavaScript-iteratorer ved hjelp av passende eksempler.