⊗jsSpItOL 65 of 294 menu

Iteraattorien kertaluontoinen toiminta JavaScriptissä

Jokainen iteraattori voi osallistua silmukkaan vain kerran. Tämä on hieman odottamatonta, mutta loogista - loppuun kuljetettu iteraattori asettaa done-arvonsa false:ksi, mikä tarkoittaa, että sitä ei voi enää käydä läpi.

Varmistetaan tästä. Olkoon meillä seuraava generaattori:

function *func() { yield 1; yield 2; yield 3; }

Luodaan iteraattori:

let iter = func();

Käydään iteraattori läpi yhdellä silmukalla:

for (let elem of iter) { console.log(elem); // 1, 2, 3 }

Yritetään nyt käydä iteraattori läpi kahdella silmukalla:

for (let elem of iter) { console.log(elem); // 1, 2, 3 } for (let elem of iter) { console.log(elem); // ei toimi }

Ongelman ratkaisemiseksi tulee jokaiselle uudelle silmukalle luoda oma iteraattori:

let iter1 = func(); for (let elem of iter1) { console.log(elem); // 1, 2, 3 } let iter2 = func(); for (let elem of iter2) { console.log(elem); // 1, 2, 3 }

Voimme yksinkertaistaa:

for (let elem of func()) { console.log(elem); // 1, 2, 3 } for (let elem of func()) { console.log(elem); // 1, 2, 3 }

Korjaa seuraavassa koodissa tehty virhe:

function *func() { for (let i = 1; i <= 3; i++) { yield i; } } let elems = func(); for (let elem of elems) { console.log(elem); } for (let elem of elems) { console.log(elem); }
Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää