zoukankan      html  css  js  c++  java
  • ES6——迭代器

    • 可用于迭代的数据结构

      • Array
      • String
      • Map
      • Set
      • arguments
      • Dom(正在进行中)
    • 迭代器

      • Iterator

        Iterator 是 ES6 引入的一种新的遍历机制,迭代器有两个核心概念

        1. 迭代器是一个统一的接口,它的作用是使各种数据结构可被便捷的访问,它是通过一个键为 Symbol.iterator 的方法来实现
        2. 迭代器是用于遍历数据结构元素的指针(如数据库中的游标)

        Array

        const items = ['zero','one','two']
        const it = items[Symbol.iterator]()
        it.next()	//{value:'zero', done: false}
        it.next()	//{value:'one', done: false}
        it.next()	//{value:'two', done: false}
        it.next()	//{value:undefined, done:true}
        

        Map

        let myMap = new Map()
        myMap.set(0,'zero')
        myMap.set(1,'one')
        myMap.set(2,'two')
        const mapIt = myMap[Symbol.iterator]()
        mapIt.next()	//{value: [0,'zero'], done: false}
        mapIt.next()	//{value: [1,'one'], done: false}
        mapIt.next()	//{value: [2,'two'], done: false}
        mapIt.next()	//{value: undefined, done: true}
        

        Set

        let mySet = new Set()
        mySet.add('zero')
        mySet.add('one')
        mySet.add('two')
        const setIt = mySet[Symbol.iterator]()
        setIt.next()	//{value:'zero', done:false}
        setIt.next()	//{value:'one', done:false}
        setIt.next()	//{value:'two', done:false}
        setIt.next()	//{value:undefined, done:true}
        

        String

        let str = 'hello'
        const strIt = str[Symbol.iterator]()
        strIt.next()	//{value:'h', done:false}
        strIt.next()	//{value:'e', done:false}
        strIt.next()	//{value:'l', done:false}
        strIt.next()	//{value:'l', done:false}
        strIt.next()	//{value:'o', done:false}
        strIt.next()	//{value:undefined, done:true}
        
      • for...of

        ES6 新引入的循环,用于代替 for...in 和 forEach(),并且支持新的协议。它可用于迭代常规的数据类型,如 Array、String、Map、Set 等等

        Array

        const items = ["zero","one","two"]
        for(let item of items){
            console.log(item)
        }
        // zero
        // one
        // two
        

        Map

        let myMap = new Map()
        myMap.set(0,'zero')
        myMap.set(1,'one')
        myMap.set(2,'two')
        for(let item of myMap){
            console.log(item)
        }
        //[0,'zero']
        //[1,'one']
        //[2,'two']
        

        Set

        let mySet = new Set()
        mySet.add('zero')
        mySet.add('one')
        mySet.add('two')
        for(let item of mySet){
            console.log(item)
        }
        //zero
        //one
        //two
        

        String

        let str = 'hello'
        for(let s of str){
            console.log(s)
        }
        //h
        //e
        //l
        //l
        //o
        

      注:普通对象是由 Object 创建,不可迭代

  • 相关阅读:
    RAID、LVM和btrfs文件系统
    RAID、LVM和btrfs文件系统
    python实现二分叉查找
    python实现二分叉查找
    python实现二分叉查找
    python实现二分叉查找
    java集合的简单用法
    java集合的简单用法
    java集合的简单用法
    用 AJAX 读取xml 节点属性值
  • 原文地址:https://www.cnblogs.com/angle-yan/p/13420024.html
Copyright © 2011-2022 走看看