⊗jsSpItOL 65 of 294 menu

JavaScriptда итераторларнинг бир марталик иши

Ҳар бир итератор циклда фақат бир марта иштирок эта олади. Бу бир оз кутмагандир, аммо мантиқан тўғри - чунки ўтган итератор ўзининг done ни false га ўрнатади, ва демак бошқа қайта такрорланмайди.

Келиб, буни ишонч ҳосил қилайлик. Бизда куйидаги генератор бор деб фараз қилайлик:

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

Итератор ясаймиз:

let iter = func();

Итераторни битта цикл билан такрорлаймиз:

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

Энди итераторни иккита цикл билан такрорлаймиз:

for (let elem of iter) { console.log(elem); // 1, 2, 3 } for (let elem of iter) { console.log(elem); // ишламайди }

Муаммони ҳал қилиш учун ҳар бир янги цикл учун ўз итераторингизни яратишингиз керак:

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 }

Соддалаштиришимиз мумкин:

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

Куйидаги кодда қилган хатоликни тузантинг:

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); }
Ўзбек
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш