دوشنبه , خرداد ۷ ۱۳۹۷
خانه / مقالات / برنامه نویسی / web developer / Front End / Iterators در جاوا اسکریپت
ترفندهای جاوا اسکریپت

Iterators در جاوا اسکریپت

Iterables چیست؟

برای ایجاد یک فرآیند تکرار در یک آبجکت گفته می شود، که برای استفاده از آن ما از ساختار زیر استفاده می کنیم.

for ( let itr of  objectName ){
    console.log(itr);  
}

آبجکت ها که شامل Iterables:

  • String – این آبجکت به صورت پیش فرض شامل یک تکرار شونده می باشد که به تعداد طول رشته ادامه دارد و به ازای هر تکرار مقدار کاراکتر با اندیس تکرار را بر می گرداند.
  • array – حاوی یک تکرار شونده است که به تعداد طول آرایه است و به ازای هر تکرار مقدار متناظر با اندیس تکرار را بر می گرداند.
for ( let itr of  "livegoogle"){
    console.log(itr); // l,then i,v,e,g,o,o,g,l,e
}
for ( let itr of  ["a","b"]){
    console.log(itr); // a,then b
}

ایجاد یک Iterables

فرض کنیم آبجکتی به صورت زیر داریم:

let obj={start:2,end:5}

حال می خواهیم یک تکرار شونده داشته باشیم که به میزان مقدار ما بین خصوصیت start و end تکرار شود و به ازای هر تکرار، مقدار مربع اندیس جاری را برگرداند.

ابتدا خصوصیت سیمبل آبجکت مورد نظر را با فرمت زیر پر می کنیم.

obj[Symbol.iterator] = function(){
    return {...}
}

همان طور که می بینید این خصوصیت شامل تابعی است که خروجی آن شامل یک آبجکت است که خود دارای یک متد اجباری با نام next و دیگر خصوصیت های دلخواه است که در زیر فرمت آبجکت خروجی را نشان می دهیم:

{
    customYourPropery:customValue,
    next(){
    if (conditionForRepeat) return {done: false,value:yourValue}
        else return {done: true}
    }
}

حال برای پیاده سازی مثال بالا؛ آبجکت خروجی را به صورت زیر تعریف می کنیم:

return {
   current: this.start,   //custom varible
   last: this.end,         //custom varible
   next() {
      let val=this.current*this.current;  // square index
      this.current++;
      if (this.current <= this.last)
         return { done: false, value: val };
      else 
         return { done: true };
   }
};

حال برای استفاده از این iterator کد زیر را می نویسم.

for(let itr of obj)
console.log(itr)

امیدوارم این آموزش به دردتون بخوره تا آموزش بعدی خدا به همراهتون .

 

Iterators در جاوا اسکریپت

 

  • آیا این مقاله مفید بود؟
  • بله   خیر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.