ES6基礎之——迭代器Iterators

迭的意思就是交換、輪流,代的意思就是代替,迭代就是輪流交換,這裏說的Iterators有幾個特色:
一、每次執行的時候會返回一個對象,這個對象裏面有兩個東西,一個是value,也就是返回來的值;還有就是done,它的值是布爾值,表示還有沒有能夠迭代的東西,沒有了的話,這個done的值就是true,表示完成了迭代
{value:xx,done:true/false}
二、另外Iterators裏還應該有next的方法,每次執行方法的時候會返回一個對象,對象裏面的東西就是value和done這兩個屬性,若是沒有迭代的東西的話,執行next方法之後,value的值就會變爲undefined,done的值會變爲ture

 

在ES6裏面有一個叫作Generators的東西,能夠去生成咱們剛纔說的這個迭代器,在介紹Generators以前,咱們先手工建立一個迭代器,這個迭代器能夠是一個函數,例子:
function chef(foods){ //foods:數組參數
let i = 0; //定義索引值的變量
return {
  next(){
    //定義每次執行next的方法的時候返回來的value還有done的值
    let done= (i>=foods.length); //done的值:有迭代的東西的時候是false,沒有的話就是ture
    let value = !done?foods[i++]:undefined; //value的值:先問下done的值,若是這個done的反向值是true的話,value的值就會是當前此次循環的時候,這個foods裏面某一個項目的值;若是done的值是ture的話,value的值就會是undefined
    return{
      value:value,
      done:done
    }  
  }
}
//運用迭代器
let zhangsan=chef(['tomato','eggs']);
console.log(zhangsan.next()); //{value:'tomato',done:false}
console.log(zhangsan.next()); //{value:'eggs',done:false}
console.log(zhangsan.next()); //{value:undefined,done:true}
相關文章
相關標籤/搜索