ECMAScript6--16.Iterator

1.Iterator 和 for...of循环

  • 什么是Iterator接口
    • 在js过程中操作某些数据结构,比如数组、Object对象、Map、Set都可以理解为是数据集合,数据集合怎么去读取这是一个问题;
    • 数据结构本身不同,怎么用相同办法的接口,让不同数据结构得到一个统一的读取方式;这就是Iterator这个接口要实现的功能;
  • Iterator的基本用法
  • for...of
    • for...of原理和Iterator有关;
    • for..of循环的过程就是不断调用Iterator接口来达到这个形式;
      • 通过for...of统一的这种形式达到读取不同数据结构的目标;

2.Iterator用法

{
 let arr = ['hello','world'];
 let map = arr[Symbol.iterator]();
 console.log(map.next()); //Object{value:"hello",done:false}
 console.log(map.next()); //Object{value:"world",done:false}
 console.log(map.next()); //Object{value:undefined,done:true}
//返回了一个对象,有两个选项,一个value(数组的第一项),一个done(这循环是不是还有下一步),
 done:false;说明循环并没有结束,done:true没有下一步了; 
}

3.自定义Iterator接口

不管要遍历什么样的数据结构,这个数据结构可能复杂可能简单,如果想自定义部署这个方法,一定要按照这个操作;最后返回一个对象:这个对象要包含next()方法,next方法返回的值,是有两个一个value,一个done;

{
//遍历obj,达到先遍历start,在遍历end;
let obj ={
    start:[1,3,2],
    end:[7,9,8],
    [Symbol.iterator](){
        let self = this;
        let index = 0;
        let arr = self.start.concat(self.end);
        let len = arr.length;
        return{
            next(){
                if(index<len){
                    return {
                        value:arr[index++],
                        done:false
                    }
                }else{
                    return {
                        value:arr[index++],
                        done:true
                    
                    }
                }
            }
        
        }
    }

};   

for(let key of obj){
    console.log(key);
}
//遍历结果:
//1
//3
//2
//7
//9
//8
}

4.for...of循环

 {
  let arr = ['hello','world'];
  for(let value of arr){
      console.log('value',value);
  }
  //value hello
  //value world

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,864评论 6 13
  • Iterator(遍历器)的概念 JavaScript原有的表示“集合”的数据结构,主要是数组(Array)和对象...
    呼呼哥阅读 9,901评论 0 2
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,929评论 18 399
  • 因为要学习《一滴眼泪换一滴水》这篇课文,我再次把《巴黎圣母院》故事情节温习一遍。忽然发现有点感动,只为那个全书最丑...
    禾麦清风阅读 3,523评论 0 1
  • 无心 末赋新词醉方休, 从来无笑不知愁。 不过凡尘时过尽, 只叫繁华随沙流! 缘方尽 词方收 一曲离别若回眸。...
    紫眸逝雨倾城阅读 1,430评论 0 7