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 相关文章推荐
jquery 双色表格实现代码
Dec 08 Javascript
网易JS面试题与Javascript词法作用域说明
Nov 09 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
Mar 04 Javascript
简介JavaScript中Math.LOG10E属性的使用
Jun 14 Javascript
使用jQuery调用XML实现无刷新即时聊天
Aug 07 Javascript
jQuery File Upload文件上传插件使用详解
Dec 06 Javascript
underscore之function_动力节点Java学院整理
Jul 11 Javascript
[js高手之路]寄生组合式继承的优势详解
Aug 28 Javascript
Vue+webpack+Element 兼容问题总结(小结)
Aug 16 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
Jul 21 Javascript
js实现数字跳动到指定数字
Aug 25 Javascript
通过实例解析js可枚举属性与不可枚举属性
Dec 02 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
phplock(php进程锁) v1.0 beta1
2009/11/24 PHP
在PHP中养成7个面向对象的好习惯
2010/07/17 PHP
php通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
PHP中上传文件打印错误错误类型分析
2019/04/14 PHP
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
js open() 与showModalDialog()方法使用介绍
2013/09/10 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
2013/12/28 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
2015/03/26 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
理解 JavaScript Scoping &amp; Hoisting(二)
2015/11/18 Javascript
原生JavaScript制作微博发布面板效果
2016/03/11 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
js实现下一页页码效果
2017/03/07 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
2017/07/05 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
2018/09/29 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
Python编码时应该注意的几个情况
2013/03/04 Python
python根据开头和结尾字符串获取中间字符串的方法
2015/03/26 Python
调试Python程序代码的几种方法总结
2015/04/28 Python
python下setuptools的安装详解及No module named setuptools的解决方法
2017/07/06 Python
Python实现图片滑动式验证识别方法
2017/11/09 Python
Python 保持登录状态进行接口测试的方法示例
2019/08/06 Python
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
介绍一下XMLHttpRequest对象
2012/02/12 面试题
给水工程专业毕业生自荐信
2014/01/28 职场文书
cf收人广告词
2014/03/14 职场文书
服务承诺书格式
2014/05/21 职场文书
预备党员转正考核材料
2014/06/03 职场文书
初中同学会活动方案
2014/08/22 职场文书
主持人开幕词
2015/01/29 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书
2016年教师新年寄语
2015/08/18 职场文书
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android