美文网首页
什么是可迭代对象

什么是可迭代对象

作者: 南蓝NL | 来源:发表于2019-07-07 19:31 被阅读0次

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

遍历过程,创建一个指针对象,调用指针的next方法,每调用依次next方法,就会返回valuedone两个属性对象,value属性是当前成员的值,done属性是一个布尔值,表示循环可以结束

var it = makeIterator(['a','b']);
console.log(it.next());
console.log(it.next());
console.log(it.next());

function makeIterator(array){
  var nextIndex = 0;
  return {
    next: function(){
      return nextIndex < array.length ?
        { value: array[nextIndex++],done: false }:
        {value:undefined,done: true}
    }
  }
}

具有原生Iterator接口的数据结构

Array
Map
Set
String
TypedArray
函数的 arguments 对象
NodeList 对象

凡是部署了Symbol.iterator属性,都称之为部署了遍历器接口,返回一个遍历器对象;对于原生部署了Iterator接口,for...of会自动去遍历,如果没有的话(比如对象),都需要自己在Symbol.iterator属性上面部署

总结: 一个数据结构(数组、Map、Set,某些类似数组的对象——比如arguments对象,DOM NodeList对象,Generator对象,字符串等),才可以被for...of循环遍历。 换句话说就是for...of 循环内部调用的是数据结构Symbol.iterator方法

[更多请参考参考阮一峰](http://es6.ruanyifeng.com/#docs/iterator

相关文章

  • Python进阶 - 高性能计算之协程

    迭代器 可迭代对象 什么是可迭代对象 可迭代对象就是对象的类中实现了__iter__方法的对象。对于可迭代对象,可...

  • 生成器与迭代器

    一:可迭代对象(Iterable) 1、什么叫可迭代对象? 2、python中那些是可迭代对象 二:迭代器(Ite...

  • Python学习笔记十四(多任务、协程、迭代器、生成器)

    迭代[1] 什么是迭代 遍历取值的过程叫做迭代。 可迭代对象[2] 可以被for循环遍历取值的对象叫做可迭代对象。...

  • PYTHON 迭代器、生成器、协程

    1.迭代 什么是迭代?遍历取值的过程就是迭代 1.1 可迭代对象 可以被for循环遍历取值的对象就是可迭代对象。例...

  • 什么是可迭代对象

    遍历器(Iterator)它是一种借口,为各种不同的数据结构提供统一的访问机制。 任何数据结构只要部署Iterat...

  • python之可迭代对象、迭代器、生成器

    他们是什么 什么是可迭代对象iterable凡是实现了 __iter__ 方法的对象就是可迭代对象。例如 list...

  • 浅析python迭代器

    可迭代对象Iterable 可迭代对象是什么?简单点说,那些能被for循环的对象就是可迭代对象。精确一点来说可迭代...

  • 迭代

    1. 什么是迭代? 2. 什么是可迭代对象? 3. 什么是迭代器对象? 4. 请说明迭代协议? 5. 迭代的常用定...

  • python中可迭代对象、迭代器、生成器的关系

    可迭代对象与迭代器 1)可迭代对象包含迭代器。 2)如果一个对象拥有__iter__方法,其是可迭代对象;如果一个...

  • Py进阶|可迭代对象、迭代器

    可迭代对象 其实,我们见过可迭代对象。像列表、字典、元祖、集合,只是当时不知道而已。为什么称呼为“可迭代对象”呢?...

网友评论

      本文标题:什么是可迭代对象

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