美文网首页
ES6 Iterator的应用

ES6 Iterator的应用

作者: 阿昕_ | 来源:发表于2018-08-17 18:56 被阅读26次
  • for...of只能遍历拥有iterator属性的对象,所以普通的对象是无法使用iterator遍历的,可以自己模拟一个遍历器,代码如下:
let obj = {
    a: 1,
    b:2
}

// 自定义遍历器
Object.defineProperty( obj, Symbol.iterator, {
    enumerable: false,
    writeable: false,
    configurable: true,
    value(){
        let keys = Object.keys(obj)
        let idx = 0
        let o = this
        return {
            next(){
                return {
                    value: o[keys[idx++]],
                    done: (idx > keys.length)
                }
            }
        }
    }
})

for(let v of obj){
    console.log(v)      // 1 2
}
  • 根据遍历器的特性,我们可以定义一个"无限迭代器",下面展示一个随即生成"无限个"手机号码的例子
let seconds = [3,4,5,7,8]
let numList = []
let randomNum = {
   [Symbol.iterator](){
       return {
           next(){
               return {
                   value: `1${seconds[Math.floor(Math.random()*seconds.length)]}${parseInt(Math.random()*899999999+100000000)}`
               }
           }
       }
   }
}

for(let v of randomNum){
   numList.push(v)
   if(numList.length === 100) break     //   如果不对数量加以控制,则永远不会结束,程序将被挂起
}

console.log(numList)

相关文章

  • es6解读6- Iterator 和 for...of 循环

    es6 Iterator 和 for...of 循环 什么是Iterator接口 ES6中内置了一些Symbol,...

  • ES6 Iterator的应用

    for...of只能遍历拥有iterator属性的对象,所以普通的对象是无法使用iterator遍历的,可以自己模...

  • Generator(二)

    内建Iterator Iterator是ES6的重要组成部分,因此,对许多内建类型你不需要自己创建迭代器,ES6已...

  • 『ES6脚丫系列』遍历器iterator

    『ES6脚丫系列』遍历器iterator本文内容如下: 具有iterator接口的数据结构 【01】原生就具有It...

  • es 常用基础小节--(二)

    上次突然来活儿,现在接着继续: 3.iterator iterator迭代器是另外4个ES6常用特性的实现基础(解...

  • JS Iterator(遍历器)

    ES6 规定,默认的 Iterator 接口部署在数据结构的 Symbol.iterator 属性,或者说,一个数...

  • es6解读6- Iterator 和 for...of 循环

    什么是Iterator接口 ES6中内置了一些Symbol,其中最重要的一个恐怕就是Symbol.iterator...

  • JS新特性

    ES ES5 ES6 箭头函数 Promise Symbol属性 Iterator Generator async...

  • [JavaScript] generator

    ES6中的generator返回一个iterator/iterable,由“function*”定义,genera...

  • ES6 迭代器简述

    Iterator Iterator 是 ES6 引入的一种遍历机制,迭代器有两个核心概念: 迭代器是一个统一的接口...

网友评论

      本文标题:ES6 Iterator的应用

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