多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
迭代器( Iterator)是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署Iterator接口,就可以完成遍历操作。 1、 ES6创造了一种新的遍历命令for...of循环, Iterator接口主要供for.of消费 2、原生具备iterator接口的数据(可用for of遍历) a) Array b) Arguments c) Set d) Map e) String f) TypedArray g) Nodelist ``` let arr=["a","b","c","d"] for(val of arr){ console.log(val) } 原理: let Iterator=arr[Symbol.iterator]() Iterator.next()//返回包含value和done的属性对象 当done为true是遍历完毕 Iterator.next() Iterator.next() Iterator.next() Iterator.next() ``` 工作原理: a) 创建一个指针对象,指向当前数据结构的起始位置 b)第一次调用对象的next方法,指针自动指向数据结构的第一个成员 c)接下来不断调用next方法,指针一直往后移动,直到指向最后一个成员 d)每调用next方法返回一个包含value和done属性的对象 >[danger]需要自定义遍历数据的时候,要想到迭代器。 例子: ``` const banji={ name:"火箭班", student:[ "dash", "tom", "jack", "lili" ], [Symbol.iterator](){ let index=0 let _this=this; return { next:function(){ if(index<_this.student.length){ const result={ value:_this.student[index], done:false }; index++; return result; }else{ return { value:undefined, done:true } } } } } } ```