ES6迭代器(迭代器)和for.of循环使用方法学习(总结)

  

  

生成器概念在Java、Python等语言中都是具备的,ES6也添加到了JavaScript中.Iterator可以使我们不需要初始化集合,以及索引的变量,而是使用迭代器对象的一方法,返回集合的下一项的值,偏向程序化。

  

迭代器是带有特殊接口的对象。含有一个下一个()方法,调用返回一个包含两个属性的对象,分别是价值和完成,价值表示当前位置的值,完成表示是否迭代完,当为真正的时候,调下就用无效了。

  

ES5中遍历集合通常都是为循环,数组还有forEach方法,对象就是工党,ES6中又添加了映射和集合,而迭代器可以统一处理所有集合数据的方法。迭代器是一个接口,只要你这个数据结构暴露了一个迭代器的接口,那就可以完成迭代.ES6创造了一种新的遍历命令…的循环,迭代器接口主要供的……消费。

  

  

<强> 1,默认迭代器接口

  

数据结构只要部署了迭代器接口,我们就成这种数据结构为“可遍历”(Iterable) .ES6规定,默认的迭代器接口部署在数据结构的象征。迭代器属性,或者说,一个数据结构只要具有符号。迭代器数据,就可以认为是“可遍历的”(iterable)。

  

可以供……的消费的原生数据结构

  
      <李> 数组   <李> 地图   <李> 设置   <李>字符串   <李> TypedArray(一种通用的固定长度缓冲区类型,允许读取缓冲区中的二进制数据)   <李>函数中的参数对象李   <李>节点列表对象李   
  

可以看上面的原生数据结构中并没有对象(对象),为什么呢?
  

  

那是因为对象属性的遍历先后顺序是不确定的,需要开发者手动指定。本质上,遍历器是一种线性处理,对于任何非线性的数据结构,部署遍历器接口就等于部署一种线性变换。
  

  

做如下处理,可以使对象供……的消费:

     //code1   函数Obj(价值){   这一点。值=https://www.yisu.com/zixun/value;   这一点。下一个=零;   }   Obj.prototype(象征。迭代器]=function () {   var迭代器={   下:   };   当前var=;   函数next () {   如果(当前){   var值=current.value;   当前=current.next;   返回{   完成:假的,   价值:价值   };   其他}{   返回{   完成:真   };   }   }   返回迭代器;   }   var>//code2   让设置=new()阀门阀门(a) (b)阀门(' c ');   让(x, y)=设置;//x=a;y=' b '   让(首先,…休息]=设置;//第一次=' a ';休息=[' b ', ' c ');   之前      

(2)扩展运算符

     //code3//例一   var str='你好';   […str]//[' h ', ' e ', ' l ', ' l ', ' o ']//例二   让arr=[' b ', ' c ');   (' a ',……加勒比海盗,' d ')//(a, b, c, d的)   之前      

(3)发电机函数中的产量*表达式(下一章介绍)

     //code4   让发电机=函数* (){   收益率1;   产量* (2、3、4);   收益率5;   };   var迭代器=发生器();   iterator.next()//{价值:1、完成:假}   iterator.next()//{完成值:2日:假}   iterator.next()//{值:3:假}   iterator.next()//{完成值:4日:假}   iterator.next()//{值:5,完成:假}   iterator.next()//{值:未定义,完成:真正的}   之前      

(4)其它场合

  
      <李> 的. .   <李> Array.from李   <李> Map (), (), WeakMap (), WeakSet()   <李> Promise.all()   <李> Promise.race()   
  

<强> 3,……的循环的优势

  

先看看,数组forEach方法的缺点:

     //code5   myArray。forEach(功能(价值){   console.log(价值);   });   之前      

这个写法的问题在于,无法中途跳出forEach循环,打破命令或返回命令都不能生效。

  

再看看,对象……在的循环的缺点:

        (var指数myArray) {   console.log (myArray(指数));   };      
      <李>数组的键名是数字,但是……在循环是以字符串作为键名,“0”,“1”,“2”等。   <李>……在循环不仅可以遍历数字键名,还会遍历手动添加的期推荐,甚至包括原型链上的键。   <李>某些情况下,…在循环会议任意顺序遍历键名李   <李>……在遍历主要是为遍历对象而设计的,不适用于遍历数组李

    ES6迭代器(迭代器)和for.of循环使用方法学习(总结)