迭代器

迭代器对象,拥有next()方法,会返回有个结果对象。该结果对象有两个属性:1.对应下个值的value 2.一个布尔值done,该布尔值表示没有更多值可供使用。
迭代器持有一个指向集合位置的内部指针,每当调用next()方法,迭代器就会返回相应的下一个值。

*如下为一个迭代器的实现:

function creatInterator(arr) {
   this.i = 0;
   return {
      next: function () {
         let done = i >= arr.length
         return {
            done: done,
            value: done ? undefined : arr[i++]
         }
      }
   }
}

使用该迭代器:

let it1 = creatInterator([1, 2, 3]);
console.log(it1.next())
console.log(it1.next())
console.log(it1.next())
console.log(it1.next())
{ value: 1, done: false }
{ value: 2, done: false }
{ value: 3, done: false }
{ value: undefined, done: true }
生成器

对于生成器,就是可以返回一个迭代器的函数

function* creatInterator2() {
   yield function(x){
      console.log(2*x)
      return 3*x
   }(9);
   yield 1;
   yield 3;
}

使用该生成器:


var it2 = creatInterator2();
console.log(it2.next())
console.log(it2.next())
console.log(it2.next())
console.log(it2.next())
18
{ value: 27, done: false }
{ value: 1, done: false }
{ value: 2, done: false }
{ value: undefined, done: true }

shuhdad
15 声望2 粉丝

引用和评论

0 条评论