迭代器自定义遍历对象
要说起迭代器自定义遍历对象,首页要知道什么是迭代器?
生成器概念在Java,Python等语言中都是具备的,ES6也添加到了JavaScript中。Iterator可以使我们不需要初始化集合,以及索引的变量,而是使用迭代器对象的 next 方法,返回集合的下一项的值,偏向程序化。
迭代器是带有特殊接口的对象。含有一个next()方法,调用返回一个包含两个属性的对象,分别是value和done,value表示当前位置的值,done表示是否迭代完,当为true的时候,调用next就无效了。
ES5中遍历集合通常都是 for循环,数组还有 forEach 方法,对象就是 for-in,ES6 中又添加了 Map 和 Set,而迭代器可以统一处理所有集合数据的方法。迭代器是一个接口,只要你这个数据结构暴露了一个iterator的接口,那就可以完成迭代。ES6创造了一种新的遍历命令for...of循环,Iterator接口主要供for...of消费。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>迭代器</title>
</head>
<body><script>//声明一个数组const xiyou = ['唐僧','孙悟空','猪八戒','沙僧'];//使用 for...of 遍历数组// for(let v of xiyou){// console.log(v);// }let iterator = xiyou[Symbol.iterator]();//调用对象的next方法console.log(iterator.next());console.log(iterator.next());console.log(iterator.next());console.log(iterator.next());console.log(iterator.next());</script>
</body>
</html>
如上图所示,可以使用 for...of 遍历数组,直接得到值的遍历。也可以使用迭代器的方式进行遍历。
迭代器自定义遍历对象遍历对象中的某一个属性?
举例:使用for..of遍历banji中stus数组?
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>自定义遍历数据</title>
</head><body><script>//声明一个对象const banji = {name: "终极一班",stus: ['xiaoming','xiaoning','xiaotian','knight'],[Symbol.iterator]() {//索引变量let index = 0;//保存外面的this对象let _this = this;return {next: function () {if (index < _this.stus.length) {const result = { value: _this.stus[index], done: false };//下标自增index++;//返回结果return result;}else{return {value: undefined, done: true};}}};}}//遍历这个对象 for (let v of banji) {console.log(v);}</script>
</body></html>
如上所示,我们使用自定义的一个[Symbol.iterator](){ }函数,在内部完成一个迭代器的操作,然后在外部通过for..of遍历,即可实现效果;
迭代器自定义遍历对象相关推荐
- 【Python入门教程】第36篇 可遍历对象与迭代器
本篇我们介绍 Python 中的可遍历对象(iterable)与迭代器(iterator),以及它们之间的区别. 可遍历对象 在 Python 中,可遍历对象是指包含零个.一个或者多个元素的对象. 可 ...
- es6 迭代器(遍历器)Iterator 自定义遍历器 lterator/简单模拟values方法 for of运行机制 Array/Set/Map默认迭代器接口 对象设置迭代器
文章目录 迭代器 Iterator 用处 (需要自定义遍历数据的时候) 自定义 遍历器 lterator 简单模拟values方法 Array Set Map 默认迭代器接口 entries valu ...
- Java迭代器iterator遍历有条件删除对象
Java迭代器iterator遍历有条件删除对象 在使用迭代器遍历对象并对对象使用删除操作时可能发生的问题指南 文章目录 Java迭代器iterator遍历有条件删除对象 前言 总结 前言 前不久在使 ...
- 玩转Python中迭代器与迭代对象的使用与演示
0.什么是迭代器(iterator)与迭代对象? 比如:python中的集合数据类型,如 list . tuple . dict . set . str 等,我们可以使用for遍历其中的每个元素,此外 ...
- 1.10 Iterator(迭代器)遍历集合元素
Iterator(迭代器)遍历Collection集合元素 Iterator(迭代器)是一个接口,它的作用就是遍历容器的所有元素,也是 Java 集合框架的成员,但它与 Collection 和 Ma ...
- JS遍历对象或者数组
From: http://keshion.iteye.com/blog/728122 一.纯js实现 Js代码 <script> var obj = {"player_id& ...
- python 生成器对象_Python 生成器, 迭代器, 可迭代对象的区别
1.可迭代对象 在python中, 一切皆对象, 但凡是可以用for循环进行遍历取值的对象都可以称之为可迭代对象, 可迭代对象在程序的一个执行周期中,可以无限轮次的进行循环遍历 2.迭代器 a.一个可 ...
- vue中插值语法中v-for() of 与v-for() in 遍历对象数组的异同,以及for in for of在方法中遍历对象和数组的异同
写这个的目的是记录下Vue中使用v-for-in v-for-of遍历对象与遍历数组的区别,以及JS中使用for-in for-of 遍历对象和数组的区别. 直接说结论,节约大家时间,下面是推论,有时 ...
- jQuery遍历对象/数组/集合
jQuery遍历对象/数组/集合 转载自: 网络1.jquery 遍历对象<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitiona ...
最新文章
- 深入浅出Yolo系列之Yolov3amp;Yolov4核心基础知识完整讲解
- 在Java中使用xpath对xml解析
- C语言中被常用到的宏
- LOJ#6281. 数列分块入门 5
- 将自己的APK变成系统的APK
- 全国大型水库水情数据汇总2018
- SQL Server死锁诊断--同一行数据在不同索引操作下引起的死锁
- Tree Cutting HDU - 5909
- 使用Phantom omni力反馈设备控制机器人
- python 字典排序成绩_原来python中dict()的高级用法可以这样实现!真是让我长了见识...
- arcpy:TIF/IMG上色后转KMZ文件
- android微信配色,万能微信公众号配色模板(神仙配色太好看了)
- 2021-2027中国家具拉手市场现状及未来发展趋势
- Solving environment: failed
- Python3,4行代码给图片加美颜,拍照再也不需要开美颜滤镜了。
- 开源RPC性能比拼测试 : 一不小心我们进了第一梯队
- relativePath
- tensor之维度转换
- 云计算具有哪些特点,主要分为哪几大类型?
- ​​​LabVIEW DLL传递一个二维数组报错
热门文章
- Spring Cloud原理
- jvm系列(二):JVM内存结构
- redis底层数据结构简述
- 世界最厉害的14位程序员,你认识几个?
- Asp.net 关于错误提示 类型“XXX1”在未被引用的程序集中定义,必须添加对程序集XXX2的引用...
- .NET调用Oracle存储过程,使用数组类型的参数(如ArrayList)
- 《Android安全技术揭秘与防范》—第8章8.5节Hook检测/修复
- 1707: [Usaco2007 Nov]tanning分配防晒霜
- 解决SWFUpload在Chrome、Firefox浏览器下session找不到的问题
- pandas - Series