美文网首页
ES6中的迭代器、生成器

ES6中的迭代器、生成器

作者: 练习时长2年半的个人练习生 | 来源:发表于2020-05-09 16:29 被阅读0次

迭代器 /遍历器 Iterator

  1. 迭代器是什么
    迭代器Iterator是一个具有next方法的对象 (generator对象)。

  2. 为什么要使用Iterator 迭代器?
    javaScript 有两种集合类型的数据结构 Array、Object。es6新增了set / map 两种集合类型的数据结构。迭代器Iterator的出现是为了能够有一个统一遍历接口机制,来处理不同的数据结构类型的遍历(依次对内部成员进行操作)。

  3. 数据结构的Symbol.Iterator
    具体表现在各数据结构的Symbol.Iterator属性上,Symbol.iterator属性的值是一个函数,它返回一个迭代器对象。一个数据结构只要部署了Symbol.iterator属性就能使用 for...of遍历 与 ...运算符 操作(object 因为没有部署这个属性,所以不能直接使用 for of 和 展开运算符)

  4. 以下几个数据类型默认部署了Symbol.Iterator属性(可使用 for of 、展开运算符)

    • 数组
    • 字符串
    • Map
    • Set
    • Arguments对象
    • NodeList

具体实现

let obj = {
    [Symbol.iterator] () {
    let val = 0
        return {
            next () {
                if (val > 5) {
                    return {done: true}
                }
                return {value: val++,done: false}
            }
        }
    }
}

for (let val of obj) {console.log(val)}

let iterator = obj[Symbol.iterator]
iterator.next()
iterator.next()
iterator.next()
iterator.next()
iterator.next()
iterator.next()

补充 for in/ for of/forEach

- for in 的出现 是为了解决对象遍历的问题,他会遍历出所有可枚举类型的属性 
  • forEach 的出现是为了给解决for 遍历数组过于麻烦的问题。缺点就是不能在遍历过程中跳出。
  • for of 是专门供给 Iterator迭代器消费的。

数组的entries方法

数组的entries方法返回的是一个数组键值对的迭代器;如下:
let arr = ["李明","韩寒","lhy","spx"]

let it = arr.entries();
console.log(it.next())

相关文章

  • JavaScript设计模式-0001---迭代器模式

    使用闭包实现迭代器 test es6使用 生成器实完成迭代器模式 使用es6的生成器实现数据自增 迭代器/es6的...

  • Generator(一)

    要理解生成器,先理解迭代器。因为生成器就是返回一个迭代器的函数。 ES5实现的迭代器 ES6中的生成器用法: 生成...

  • 迭代器,生成器和yield

    迭代器, 生成器, yield 都是ES6 中的新语法 迭代器 迭代器由三个方法组成: hasNext() 是否还...

  • JavaScript骚操作之遍历、枚举与迭代(下篇)

    ES6 迭代器(iterator)、生成器(generator) 上一篇提到,for of循环是依靠对象的迭代器工...

  • Generator函数实现斐波那契数列

    ES6 中 generator生成器函数 特点: 调用generator函数返回一个迭代器(iterator)对象...

  • ES6-ES13新特性

    ES6(ECMAScript 2015) ES6 正式支持了类、模块、迭代器、生成器、箭头函数、Promise、反...

  • yield and Iterator

    Generator(生成器) 生成器是特殊的迭代器,迭代器不一定是生成器。 生成器与迭代器均是可迭代对象。 目前学...

  • 2019-03-20

    1 迭代器和生成器 迭代器 获取数据:next (迭代器)、for 循环遍历 ,数据来源:转换、生成器 生成器:...

  • web前端-在迷惘中的探索HTML5(一)定位及地图

    友情提示链接:ES6系列(一)迭代器、for-of循环和生成器 Generators 在HTML5的新标准中,有了...

  • python生成器(generator)

    1.生成器(generator)概念 生成器是迭代器,生成器提供了非常方便的自定义迭代器的途径,在Python中,...

网友评论

      本文标题:ES6中的迭代器、生成器

      本文链接:https://www.haomeiwen.com/subject/alghnhtx.html