ES6中Iterator与for..of..遍历用法分析


Posted in Javascript onMarch 31, 2017

本文实例讲述了ES6中Iterator与for..of..遍历用法。分享给大家供大家参考,具体如下:

Iterator与for..of..遍历

1.Iterator概念

遍历器(Iterator)是一种接口,为各种不同的数据结构提供统一的访问机制。JS中有些数据结构具备原生的Iterator接口。为了更好理解这个概念,我们也可以自己写一个Iterator。

var it = simIteractor(['hi','ES5']);
console.log(it.next()); //Object {value: "hi", done: false}
console.log(it.next()); //Object {value: "ES5", done: false}
console.log(it.next()); //Object {value: undefined, done: true}
function simIteractor(array){
    var nextIndex = 0;
    return{
      next: function(){
        return nextIndex < array.length ? {value: array[nextIndex++], done: false} : {value: undefined, done:true};
      }
    };
}

2.ES6中规定,默认的Iterator接口部署在数据结构的Symbol.iterator属性,或者说,一个数据结构只要具有Symbol.iterator属性就可以任务是可遍历的。在ES6中,有3类数据结构原生具备Iterator接口:数组、某些类似数组的对象、Set及Map。

3.提到可遍历,就要说说遍历的方法。

for...in... : for-in是为普通对象设计的,你可以遍历得到字符串类型的键,因此不适用于数组遍历

For...of... : for-of循环用来遍历数据—例如数组中的值。for-of循环也可以遍历其它的集合

for-of循环不仅支持数组,还支持大多数类数组对象,例如DOMNodeList。

for-of循环也支持字符串遍历,它将字符串视为一系列的Unicode字符来进行遍历:

or (var chr of "abc"){
  alert(chr); //依次弹出a,b,c
}

它同样支持Map和Set对象遍历。如果你不知道Map 请看 https://3water.com/article/110048.htm,如果你不知道Set 请看 https://3water.com/article/110052.htm 。

希望本文所述对大家ECMAScript程序设计有所帮助。

Javascript 相关文章推荐
JS面向对象编程浅析
Aug 28 Javascript
查看源码的工具 学习jQuery源码不错的工具
Dec 26 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
Sep 03 Javascript
JavaScript动态创建link标签到head里的方法
Dec 22 Javascript
jQuery实现只允许输入数字和小数点的方法
Mar 02 Javascript
简单谈谈Javascript函数中的arguments
Feb 09 Javascript
基于jQuery实现咖啡订单管理简单应用
Feb 10 Javascript
基于Bootstrap框架实现图片切换
Mar 10 Javascript
Vue实现双向绑定的原理以及响应式数据的方法
Jul 02 Javascript
微信小程序车牌号码模拟键盘输入功能的实现代码
Nov 11 Javascript
原生js实现碰撞检测
Mar 12 Javascript
简单了解前端渐进式框架VUE
Jul 20 Javascript
node.js平台下的mysql数据库配置及连接
Mar 31 #Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
Mar 31 #Javascript
angular.JS实现网页禁用调试、复制和剪切
Mar 31 #Javascript
angular.js+node.js实现下载图片处理详解
Mar 31 #Javascript
JavaScript函数柯里化原理与用法分析
Mar 31 #Javascript
js实现一个猜数字游戏
Mar 31 #Javascript
微信小程序页面间通信的5种方式
Mar 31 #Javascript
You might like
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
2010/06/28 Javascript
javascript 实用的文字链提示框效果
2010/06/30 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
详解react-redux插件入门
2018/04/19 Javascript
基于vue展开收起动画的示例代码
2018/07/05 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
js实现简单贪吃蛇游戏
2020/05/15 Javascript
JavaScript浅层克隆与深度克隆示例详解
2020/09/01 Javascript
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
Windows下安装python2.7及科学计算套装
2015/03/05 Python
Queue 实现生产者消费者模型(实例讲解)
2017/11/13 Python
pyttsx3实现中文文字转语音的方法
2018/12/24 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
OpenCV+Python--RGB转HSI的实现
2019/11/27 Python
解决os.path.isdir() 判断文件夹却返回false的问题
2019/11/29 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
计算机科学与技术应届生求职信
2013/11/07 职场文书
大学新生欢迎词
2014/01/10 职场文书
区三好学生主要事迹
2014/01/30 职场文书
企业指导教师评语
2014/04/28 职场文书
詹天佑教学反思
2014/04/30 职场文书
外联部演讲稿
2014/05/24 职场文书
党性观念心得体会
2014/09/03 职场文书
基层工作经验证明样本
2014/11/16 职场文书
sql注入教程之类型以及提交注入
2021/08/02 MySQL
千万级用户系统SQL调优实战分享
2022/03/03 MySQL