11_迭代器

迭代器

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

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

2. 原生具备 iterator 接口的数据( 可用 for...of 遍历 )

// Array、Arguments、Set、Map、String、TypedArray、NodeList

3. 工作原理

// 1. 创建一个指针对象,指向当前数据结构的起始位置
// 2. 第一次调用对象的 next 方法,指针自动指向数据结构的第一个成员
// 3. 接下来不断调用 next 方法,指针一直向后移动,直到指向最后一个成员

4. 例子

// 声明一个数据
const xiyou = ['唐僧', '孙悟空', '猪八戒', '沙僧']

// 使用 for...of
for(let v of xiyou) {
    console.log(v) // 打印的是键值,如:唐僧,孙悟空,猪八戒,沙僧
}
// 使用 for...in
for(let v in xiyou) {
    console.log(v) // 打印的是键名,如:0, 1, 2, 3
}

5. 迭代器自定义遍历对象

const obj = {
    name: '小米',
    phoneType: ['小米note', '小米6', '小米9', '小米10', '小米MAX'],
    [Symbol.iterator]() {
        let index = 0
        return {
            next: () => {
                return index < this.phoneType.length ? { value: this.phoneType[index++], done: false} : { value: undefined, done: true}
            }
        }
    }
}
for (const iterator of obj) {
    console.log(iterator)
}
// 小米note
// 小米6
// 小米9
// 小米10
// 小米MAX

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

推荐阅读更多精彩内容