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 相关文章推荐
让div层随鼠标移动的实现代码 ie ff
Dec 18 Javascript
js隐藏与显示回到顶部按钮及window.onscroll事件应用
Jan 25 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
Jul 14 Javascript
Ajax中解析Json的两种方法对比分析
Jun 25 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
Jul 20 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
Nov 04 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
Mar 06 Javascript
详解webpack介绍&amp;安装&amp;常用命令
Jun 29 Javascript
jquery的 filter()方法使用教程
Mar 22 jQuery
微信小程序通过js实现瀑布流布局详解
Aug 28 Javascript
解决layer图标icon不加载的问题
Sep 04 Javascript
vue 解决数组赋值无法渲染在页面的问题
Oct 28 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
substr()函数中文版
2006/10/09 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
2015/04/17 PHP
PHP微信支付实例解析
2016/07/22 PHP
thinkPHP统计排行与分页显示功能示例
2016/12/02 PHP
PHP中使用OpenSSL生成证书及加密解密
2017/02/05 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
2017/08/07 PHP
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
jQuery之按钮组件的深入解析
2013/06/19 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
微信小程序 监听手势滑动切换页面实例详解
2017/06/15 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
JS中的JSON对象的定义和取值实现代码
2018/05/09 Javascript
js getBoundingClientRect使用方法详解
2019/07/17 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
2020/08/12 Javascript
30分钟搭建Python的Flask框架并在上面编写第一个应用
2015/03/30 Python
Python3.5局部变量与全局变量作用域实例分析
2019/04/30 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
Django框架 信号调度原理解析
2019/09/04 Python
一文带你了解Python 四种常见基础爬虫方法介绍
2020/12/04 Python
amaze ui 的使用详细教程
2020/08/19 HTML / CSS
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
计算机通信工程专业毕业生推荐信
2013/12/24 职场文书
王金山在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
简历中自我评价范文
2015/03/11 职场文书
停电放假通知
2015/04/14 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
优质服务标语口号
2015/12/26 职场文书
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python
python flappy bird小游戏分步实现流程
2022/02/15 Python
基于Redission的分布式锁实战
2022/08/14 Redis
PostgreSQL之连接失败的问题及解决
2023/05/08 PostgreSQL