一、iterable类型的数据
1、什么是iterable类型的数据
一个数据的数据结构中有Symble.iterator属性的数据被称为itarable类型的数据或者可遍历的数据
2、iterable类型的数据可以使用for...of遍历
3、iterable类型的数据结构有哪些
StringArraySetMap函数的arguments对象Bom的NodeList对象
二、iterator接口(遍历器接口)
1、iterator(遍历器)
2、iterator是一种接口,为各种不同的数据结构提供统一的访问机制。
3、iterator的作用:
(1)、为各种数据结构,提供一个统一的、简单的访问接口;
(2)、使得数据结构的成员能够按照某种次序排列;
(3)、iterator接口主要供for…of使用
4、iterator的遍历过程:
(1)、创建一个指针对象,指向当前数据结构的起始位置。遍历器对象的本质就是一个指针对象
(2)、第一次调用指针对象的next()方法,指针指向数据结构的第一个成员
(3)、第二次调用指针对象的next()方法,指针指向数据结构的第二个成员
(4)、不断调用指针对象的next()方法,直到它指向数据结构的结束位置
每一次调用next()方法,都会返回数据结构的当前成员的信息。具体来说,就是返回一个包含valuedone两个属性的对象,value是当前成员的值,done是一个布尔值,为true的时候表示遍历结束

// 声明一个Set类型的数据结构
let set = new Set(['a','b','c'])
// set[Symbol.iterator]表示生成一个遍历器的函数,调用它得到遍历器对象,也叫指针对象,将它赋值给变量i,指向set中成员的起始位置
let i = set[Symbol.iterator]()
// i第一次调用next()方法,i指向set的第一个成员
console.log(i.next());//{ value: 'a', done: false }
// i第二次调用next()方法,i指向set的第二个成员
console.log(i.next());//{ value: 'b', done: false }
// i第三次调用next()方法,i指向set的第三个成员
// i不断调用next()方法,指导i指向set中成员的结束位置
console.log(i.next());//{ value: 'b', done: false }
// i调用next()方法,返回一个包含value和done属性的对象,value代表当前成员的值,done表示遍历是否结束,done为true的时候表示
console.log(i.next());//{ value: undefined, done: true }

三、for…of
for…of循环内部调用的是数据结构的Symbol.iterator方法。也就是说,itarable类型的数据可以使用for…of遍历它的成员

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

iterable类型相关推荐

  1. JS 中的 Map,Set 和 iterable

    文章目录 1. Map 2.Set 3. Iterable 1. Map   初始化 Map. var m = new Map([['Michael', 95], ['Bob', 75], ['Tra ...

  2. 【JavaScript 笔记 】— 基础语法(数据类型、字符串、数组、对象、Map、Set、iterable、函数基础)

    JavaScript个人笔记 数据类型和变量 浮点数的相等比较 null 和 undefined == 与 === strict模式 字符串 模板字符串 字符串常用方法 数组 数组常用方法 对象 条件 ...

  3. 面试官:有了 for 循环 为什么还要 forEach ?

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:juejin.cn/post/7018097650687803422 本质区别 for循环和forEach的语法区别 for循 ...

  4. 我去字节跳动面试,“偷”回来的面试题,题真难...

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 作者:草木青川 来源:https://zhuanlan.zhihu.com/p/82871762 # 算法题 一面: ...

  5. 字节跳动的面试题.pdf

    来源:https://zhuanlan.zhihu.com/p/82871762 一.算法题   一面: 1.  lc 里最长上升子序列的变形题 2. 实现输入英文单词联想的功能 二面: 1.矩阵旋转 ...

  6. Python高级特性:切片、迭代、列表生成式、生成器与迭代器

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 接着廖雪峰老师的学习教程,小编要开始加快推进Python的学习进程 ...

  7. python函数第二次运行报错_Python学习笔记2-函数、高级特性

    函数 调用函数 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数 >>> abs(100) 100 >>> abs(-20) 20 ...

  8. 《Python基础知识全家桶》

    目录 1.实现一行输入多个数字,用空格隔开 2.实现一行输入多个单词,用","隔开 3.列表 4.for循环 5.切片 6.二维列表 7.元组 8.字典 set容器 9.嵌套 字典 ...

  9. python学习笔记-基础、语句、编码、迭代器

    #python的优缺点 优点:Python简单优雅,尽量写容易看明白的代码,尽量写少的代码. 缺点:第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一 ...

最新文章

  1. react+webpack项目常用的插件(plugins)
  2. 从具体案例了解知识图谱
  3. 4星|《高手》:会讲故事的科学家的经管社科书读书笔记
  4. centos7镜像加速_使用阿里云容器镜像服务托管私有Docker镜像
  5. MySql 建表、添加字段、修改字段、添加索引SQL语句写法
  6. python文本结构化处理_在Python中标记非结构化文本数据
  7. 如何通过 .NETCore 获取 Linux,Mac 的硬件信息?
  8. lrange是取出所有值并移除么_图解双指针 | LeetCode 27. 移除元素
  9. cxgrid中纵横单元格合并_逆向查询合并单元格中的数据,这两种方法你值得拥有...
  10. leetcode 高薪_利用两种不同的方法解LeetCode第1312题:让字符串成为回文串的最少插入次数
  11. php怎麼开bcmath_php-如何启用BCMath CentOS 6
  12. Grubbs准则建模与分析 C与Matlab实现
  13. 计算机excel中钱的符号,在excel中输入钱的符号 excel货币符号
  14. IDEA 中 Lombok 编译报错 Java 找不到符号问题
  15. mysql 获取两个月前的日期
  16. [渝粤教育] 西南科技大学 行政法学与行政诉讼法学 在线考试复习资料
  17. c语言中的output用法,OUTPUT 子句
  18. m3u8索引文件介绍
  19. xp透明膜p系列_一种XPP型超厚医用吸塑包装膜的制作方法
  20. 陈慧琳“《江山美人》是我的代表作”

热门文章

  1. 在国内如何注册斯里兰卡公司?需要哪些流程?
  2. 在Qt中制作入门动画-1
  3. CAN工具-VSpy(ValueCAN) - Panel面板(续)
  4. 十块钱做个好看的心形彩灯
  5. 联想小新15装ubuntu18.04
  6. scp传文件指定端口
  7. CAD绘图控件VectorDraw web library (javascript)发布v7.7014.0.5
  8. 数据分析工具实例:通过数据展示对转基因食品的思考
  9. 2013年大二下学期日记(感悟)
  10. spring boot + spring mvc 原理解析