遍历器接口

Symbol是种新的数据类型,表示独一无二,通常用于定义对象的属性名,[Symbol()]。
一、什么是遍历器接口?
一个数据结构有遍历器接口的特征是:它有Symbol.iterator属性,它有next()方法,返回一个包含value和done属性的对象。
原生具备遍历器接口的数据结构:Array,Map,Set,String,TypedArray,函数的arguments对象,NodeList对象。

//遍历数组
const arr = [1,2,3,4,5];
var a = arr[Symbol.iterator]();
a.next();

二、自定义函数生成遍历器接口

const myObj = {};
myObj[Symbol.iterator] = function () {
  return {
    next: function () {
      return {
        value: 1,
        done: true
      }
    }
  }
}

myObj[Symbol.iterator]().next()
const myObj = {
  [Symbol.iterator] : function () {
    return {
      next: function () {
        return {
          value: 1,
          done: true
        }
      }
    }
  }
}

myObj[Symbol.iterator]().next()

三、generator函数生成遍历器对象

const myObj = {};

myObj[Symbol.iterator] = function * demoFn(){
    yield [‘name‘, ‘Camille‘];
    yield [‘age‘, 26]
}

for (let [key, value] of myObj) {
  console.log(`${key}: ${value}`);
}
const myObj={
    * [Symbol.iterator]() {
            yield [‘name‘, ‘Camille‘];
            yield [‘age‘, 26]
    }
}

for (let [key, value] of myObj) {
  console.log(`${key}: ${value}`);
}
时间: 2024-10-06 15:14:02

遍历器接口的相关文章

Iterator接口(遍历器)和for/of循环

只要某个数据结构部署了Iterator接口,就可以使用拓展运算符将其转化为数组. let arr = [...iterator]; var str = 'hello'; [...str] //["h", "e", "l", "l", "o"] yield* 后面跟的是一个可遍历的结构,它会调用该结构的遍历器接口. let generator = function* (){ yield 1; yield* [

Iterator 遍历器

1.遍历器(Iterator)是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只要部署Iterator接口,就可以完成遍历操作(即依次处理该数据结构的所有成员). 2.Iterator的作用有三个:一是为各种数据结构,提供一个统一的.简便的访问接口:二是使得数据结构的成员能够按某种次序排列:三是ES6创造了一种新的遍历命令for...of循环,Iterator接口主要供for...of消费. 3.在ES6中,有些数据结构原生具备Iterator接口(比如数组),即不用任何处理,就

遍历器 for...of 循环

for...of 作为遍历所有数据结构的统一的方法,但不能直接遍历对象,因为没有 Symbol.iterator 遍历器接口 (所以可用 Object.keys( ) / Object.values( ) 去转一道,转成数组就可以用了.或者给obj [ Symbol.iterator ] = function( ){ ... }) ary.key( )  拿到数组的下标 value( )  拿到的是数组的每个值 entries( )  拿到的是:[ 下标,值 ]  这个样的一个形式的所有的数据.

第十二章 遍历器

遍历器(Iterator)的作用是按照指定的顺序来访问一个集合中的所有元素,而不需要了解集合的详细数据结构. 1 概述 1.1 foreach语句 这种遍历方式对任何类型的数据都适用,因为所有数组都继承了.NET类库中定义的类System.Array,而该类继承了接口IEnmerable.在C#中,如果某个类型继承了接口IEnumerable,或者继承了泛型接口IEnumerable<T>,或者继承了泛型接口IEnumerable<T>的任何一个构造类型,那么称该类型是“可枚举的”

ES6遍历器 生成器 学习整理

遍历器[迭代器](Iterator) 就是这样一种机制.它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只要部署 Iterator 接口,就可以完成遍历操作(即依次处理该数据结构的所有成员). Iterator 的作用有三个: 1.是为各种数据结构,提供一个统一的.简便的访问接口: 2.是使得数据结构的成员能够按某种次序排列: 3.是 ES6 创造了一种新的遍历命令for...of循环,Iterator 接口主要供for...of消费. 示例代码: //迭代器示例 functi

优酷、腾讯视频播放器接口参数说明

终于有一点空闲时间整理一下一些小插件,最近经常用到优酷.腾讯的视频播放器进行视频播放,所以整理一下以后方便使用.优酷:优酷的视频播放器接口连接为:http://open.youku.com/tools/ 里面已经有教详细的说明了.在这里也做一些说明吧:导入js文件: 1 <script type="text/javascript" src="http://player.youku.com/jsapi"> 调用: 1 <script type=&qu

C#枚举器接口IEnumerator的实现

原文(http://blog.csdn.net/phpxin123/article/details/7897226) 在C#中,如果一个类要使用foreach结构来实现迭代,就必须实现IEnumerable或IEnumerator接口.其中,IEnumerator接口定义了实现枚举器模式的方法IEnumerator.MoveNext()和IEnumerator.Reset()和成员属性IEnumerator.Count,而IEnumerable接口的唯一方法IEnumerable.GetEnum

C++迭代器/遍历器 iterator实现

1.原理 迭代器又称为遍历器,用于访问容器中的数据,迭代器旨在算法和容器之间搭建访问的桥梁,从而使算法和数据分离,不用关心数据具体的存储细节.具体的原理描述请参考以下两个博客: [1].C++迭代器 iterator [2].Iterator模式C++实现 迭代器的UML图: (来自:http://www.cnblogs.com/yc_sunniwell/archive/2010/06/25/1764934.html) 2.实现 根据以上的原理图,下面实现一个简单的迭代器. /* * 以下实现了

遍历枚举接口的元素

早在Java SE 1.0版,就存在集合类.集合类可以用来管理一组相关的对象.当需要查看.使用集合中的所有对象时可以使用枚举接口对其进行遍历.枚举接口中定义了两个方法,它通常和向量一起使用.本实例将演示其用法,实例运行效果如图 实现了Enumeration接口的对象可以生成一系列元素,每次生成一个.通过连续调用nextElement()方法可以连续获得枚举接口中的元素.但是如果枚举接口中已经没有元素,调用该方法会抛出异常.因此应该先用hasMoreElements()方法判断枚举中是否还有可用元