آموزش ویژگی های ECMAScript 6 (جلسه 31) : آموزش کار با Iterator - قسمت 1



visibility  
mode_comment   ۰

همونطور که اطلاع دارید در جلسه قبل بحث مربوط به Module ها رو به پایان رسوندیم و شما رو با همه ویژگی های اون آشنا کردیم. در این جلسه میخوایم موضوع Iterator ها رو شروع کنیم و با توضیحات و مثالهای کاربردی، اونا رو برای شما توضیح بدیم. برای این آموزش از این لینک به عنوان منبع استفاده میکنیم.

یادگیری Iterator ها خیلی میتونه برای شما ارزشمند باشه چون از اون در موارد دیگه نیز استفاده شده است. پس با یادگیری مفهمومی Iterator ها میتونین به راحتی با Promise و Generator و Set و Map و ... نیز آشنا بشید و اونا رو درک کنید.

مفاهیم Iterator و Iterable

در ES6 یک قابلیت جدید به نام Iterator اضافه شده است که امکانات خاصی رو در اختیار ما قرار میده. این قابلیت رفتار تکرار شدن اشیاء در Javascript رو مشخص می کنند.

هر شئ Iterable یا تکرار شدنی یک متد با کلید Symbol.iterator دارد. این متد یک شئ تکرار شدنی رو برمی گردونه. کد زیر رو در نظر بگیرید:

Symbol.iterator یک سمبل شناخته شده است. اگر شما در مورد سمبل ها اطلاعاتی ندارید، میتونین این لینک رو مطالعه کنید.

همونطور که دیدید در اینجا و بصورت از پیش تعریف شده برای Iterator ها با استفاده از Symbol.iterator اینکار انجام شده است. در ادامه روشهای دیگه برای تعریف یک iterable رو بهتون آموزش میدیم.

متخصص وردپرس
قالب ها و پلاگین های حرفه ای وردپرس رو خودت بنویس! بازار طراحی قالب و پلاگین نویسی وردپرس به شدت داغه و اگر بلد باشید با برنامه نویسی اختصاصی، قالب ها و پلاگین های دلخواه بنویسید تو مارکت های مطرح دنیا و یا از طریق فریلنسری می تونید به درآمد بالا برید. دوره متخصص وردپرس سون لرن رو حتما ببینید: متخصص وردپرس arrow_back

یک شئ تکرار شدنی یا Iterator، ساختار داده ای است که متدی با نام next دارد. زمانی که متد next برای یک شئ تکرار شدنی فراخوانی می شود، المنت بعدی به همراه یک مقدار Boolean که نشان دهنده پایان تکرار یا Iteration هست برگشت داده میشه. بصورت زیر:

همونطور که میبینید متد next یک شئ حاوی 2 کلید رو برگشت میده:

  • همونطور که میبینید در کد بالا مقدار done برابر با true می باشد. true بودن کلید done به این معنا است که تکرار المنتها به پایان رسیده است و دیگه المنتی وجود ندارد. در این حالت مقدار value نیز برابر با undefined خواهد بود.
  • تا زمانی که المنت در تکرار مورد نظر وجود داشته باشد، المنت به عنوان مقدار value در نظر گرفته می شود. در این حالت چون iteration به پایان نرسیده است، مقدار done برابر با false خواهد بود.

تکرار بر روی حرفهای رشته

رشته ها، آرایه ها و ... همگی iterable هستند و میتونین از متد next برای اونا استفاده کنید. مثلا فرض کنید که یک رشته hi داشته باشیم. بصورت زیر میتونیم به حرف های اون دسترسی داشته باشیم:

همونطور که میبینید در خط اول یک رشته رو تعریف کردیم. برای اینکه مطمئن بشیم که رشته ها iterable هستند یا خیر، میتونین در Console عبارت someString.__proto__ رو تایپ کنید. با اینکار متدها و ویژگی های مربوط به رشته ها نمایش داده میشه. اگر به سمت پایین Console اسکرول کنید، بصورت زیر خواهد بود:

میبینید که Symbol.iterator وجود دارد و این به معنای iterable بودن رشته ها هست. پس در کد بالا و در خط 3 به این متد دسترسی پیدا کردیم و اون رو برای رشته مورد نظر فراخوانی کردیم. با اینکار رشته مورد نظر به یک iteration تبدیل میشه و اون رو درون متغیر مورد نظر ذخیره میکنیم. حالا میتونیم با استفاده از متد next به همه حروف رشته مورد نظر دسترسی داشته باشیم. خروجی کد بالا در Console بصورت زیر خواهد بود:

میبینید که مقادیر مورد نظر چاپ شده اند. در دو حالت اول چون 2 حرف در رشته وجود دارد، مقدار done برابر با false است و در حالت سوم چون حروف به پایان میرسند، مقدار done برابر با true میشه. اگر متد next رو دفعات بیشتری نیز صدا بزنید، تفاوتی نخواهد کرد و همین حالت سوم رو برگشت میده.

در جلسه بعد بیشتر در مورد Iteration ها براتون توضیح میدم.

موفق و پیروز باشید.

یا علی

comment دیدگاه کاربران
ارسال نظرات

کاربر گرامی، امکان ارسال نظر و پشتیبانی برای دوره های مجازی فقط برای دانشجویان این دوره امکان پذیر می باشد.