遍历器 for...of 循环

for...of 作为遍历所有数据结构的统一的方法,但不能直接遍历对象,因为没有 Symbol.iterator 遍历器接口

(所以可用 Object.keys( ) / Object.values( ) 去转一道,转成数组就可以用了。或者给obj [ Symbol.iterator ] = function( ){ ... })

ary.key( )  拿到数组的下标

value( )  拿到的是数组的每个值

entries( )  拿到的是:[ 下标,值 ]  这个样的一个形式的所有的数据。

Object.keys( ) 把对象的 key 值抽取出来放在数组中

Object.values( obj ) 把对象的 value 值抽取出来放在数组中

Object.entries( )

obj[Symbol.iterator] = function(){
  return{
    next:function(){
      return{
        value:传出去的值,
        done:false 没有遍历完 / ture 遍历完了
      }
    }
  }
}

原文地址:https://www.cnblogs.com/MrZhujl/p/10103986.html

时间: 2024-10-08 00:17:20

遍历器 for...of 循环的相关文章

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 概述 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

Iterator 遍历器

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

Effective JavaScript Item 50 优先使用遍历方法而非循环

优先使用遍历方法而非循环 在使用循环的时候,很容易违反DRY(Don't Repeat Yourself)原则.这是因为我们通常会选择复制粘贴的方法来避免手写一段段的循环语句.但是这样做回让代码中出现大量重复代码,开发人员也在没有意义地"重复造轮子".更重要的是,在复制粘贴的时候很容易忽视循环中的那些细节,比如起始索引值,终止判断条件等. 比如以下的for循环就存在这个问题,假设n是集合对象的长度: for (var i = 0; i <= n; i++) { ... } //

javascript 数组遍历,几种循环方式的比较。

通常我们会用循环的方式来遍历数组.但是循环是 js 性能问题的诱因之一.所以有时候我们不得不在使用循环的方式上略加斟酌.一般我们有以下几种方式来进行数组的遍历: 方式1: for in 循环: var array = [1,2,3,4,5]; for( var val in array ){ fn(val); } 方式2: for (var i=0; i<array.length; i++){ fn(array[i]); } 这两种方法应该非常常见且使用很频繁.但实际上,这两种方法都存在性能问题

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

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

遍历器接口

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

UIScrollView实现图片轮播器及其无限循环效果

图片轮播器: 一.实现效果 实现图片的自动轮播            二.实现代码 storyboard中布局 代码: 1 #import "YYViewController.h" 2 3 @interface YYViewController () <UIScrollViewDelegate> 4 @property (weak, nonatomic) IBOutlet UIScrollView *scrollview; 5 /** 6 * 页码 7 */ 8 @prop