JS迭代器(1)

75 阅读1分钟

关于JS的迭代器你真的了解吗?

(1) 什么是迭代器呢?

:是确使用户可在容器对象(container,例如链表或数组)上遍访的对象,使用该接口无需关心对象的内部实现细节。 这个解释我们可们从中理解到:迭代器是一个对象,它可以是一个函数,参数是一个容器对象,在函数内部实现容器对象的遍历

如何成为迭代器呢?

在JavaScript中,迭代器也是一个具体的对象,这个对象需要符合迭代器协议(iterator protocol):
1、迭代器协议定义了产生一系列值(无论是有限还是无限个)的标准方式
2、那么在js中这个标准就是一个特定的next方法

next方法的实现?

一个无参数或者一个参数的函数,返回一个应当拥有以下两个属性的对象:
done(boolean)
如果迭代器可以产生序列中的下一个值,则为false。
如果迭代完毕,则为true
value 迭代器返回的任何javascript值。done为true可以省略。

一个小demo
const names = ['詹姆斯','库里','哈登','科比'];

let index = 0;
const namesIterator = {
  next:function(){
    if(index < names.length){
      return {done:false,value:names[index++]}
    }else{
      return {done:true,value:undefined}
    }
  }
}

console.log(namesIterator.next());//{ done: false, value: '詹姆斯' }
console.log(namesIterator.next()) //{ done: false, value: '詹姆斯' }
console.log(namesIterator.next()) //{ done: false, value: '哈登' }
console.log(namesIterator.next()) //{ done: false, value: '科比' }
console.log(namesIterator.next()) //{ done: true, value: undefined }

后续请看下节。。。