zoukankan      html  css  js  c++  java
  • es 中的 Iterator

    • for...in 遍历(当前对象及其原型上的)每一个属性名称,而 for...of 遍历(当前对象上的)每一个属性值

    • ES6 规定,默认的 Iterator 接口部署在数据结构的Symbol.iterator属性,或者说,一个数据结构只要具有Symbol.iterator属性,就可以认为是“可遍历的”(iterable)。Symbol.iterator属性本身是一个函数,就是当前数据结构默认的遍历器生成函数。执行这个函数,就会返回一个遍历器。至于属性名Symbol.iterator,它是一个表达式,返回Symbol对象的iterator属性,这是一个预定义好的、类型为 Symbol 的特殊值,所以要放在方括号内。

    • 原生具备 Iterator 接口的数据结构如下。
      Array
      Map
      Set
      String
      TypedArray
      函数的 arguments 对象
      NodeList 对象

    • JavaScript 原有的for...in循环,只能获得对象的键名,不能直接获取键值。
      ES6 提供for...of循环,允许遍历获得键值。

    • for...of循环调用遍历器接口,数组的遍历器接口只返回具有数字索引的属性。这一点跟for...in循环也不一样。

    let arr = [3, 5, 7];
    arr.foo = 'hello';
    for (let i in arr) {
      console.log(i); // "0", "1", "2", "foo"
    }
    for (let i of arr) {
      console.log(i); //  "3", "5", "7"
    }
    
    • ES6的数组、Set、Map 都部署了以下三个方法,调用后都返回遍历器对象。
      entries() 返回一个遍历器对象,用来遍历[键名, 键值]组成的数组。对于数组,键名就是索引值;对于 Set,键名与键值相同。Map 结构的 Iterator 接口,默认就是调用entries方法。
      keys() 返回一个遍历器对象,用来遍历所有的键名。
      values() 返回一个遍历器对象,用来遍历所有的键值。
  • 相关阅读:
    月薪3万+的大数据人都在疯学Flink,为什么?
    Flink应用场景
    Flink生态与未来
    flink学习笔记-split & select(拆分流)
    .NET MVC5简介(四)Filter和AuthorizeAttribute权限验证
    .NET MVC5简介(三)Result
    .NET MVC5简介(二)
    VUE基础实用技巧
    .NET MVC5简介(一)
    WebApi简介
  • 原文地址:https://www.cnblogs.com/cag2050/p/7651007.html
Copyright © 2011-2022 走看看