迭代器

1,476 阅读1分钟

迭代器是一种接口,为各种不同的数据结构提供统一的访问机制,任何数据结构只要部署iterator接口,就可以完成遍历操作

(iterator接口就是对象里面的一种属性)

1)ES6创造了一种新的遍历命令for....of循环,iterator接口主要供for....of消费

2)原生具备iterator接口的数据(可用for of循环)

原生具备iterator接口的数据有:

Array,Arguments,Set,Map,String,TypeArray,NodeList

for of 和 for in的区别

首先创建一个数组:

const xiyou =['唐僧','孙悟空','猪八戒','沙僧'];

for of遍历数组结果:

for(let v of xiyou){

        console.log(v);

    }

Image.png

for in遍历数组结果

for(let k in xiyou){

        console.log(k);

    }

Image.png

原理:

1.创建一个指针对象,指向当前数据结构的起始位置

2.第一次调用对象的next方法,指针自动指向数据结构的第一个成员

3.接下来不断调用next方法,指针一直往后移动,直到指向最后一个成员

4.每调用next方法返回一个包含value和done属性的对象

注:需要自定义遍历数据的时候,要想到迭代器(其中自定义遍历数据便是迭代器的作用)