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 相关文章推荐
图片自动缩小 点击放大
Jul 07 Javascript
JQuery跨Iframe选择实现代码
Aug 19 Javascript
JavaScript的类型简单说明
Sep 03 Javascript
JS继承 笔记
Jul 13 Javascript
JS保留两位小数,多位小数的示例代码
Jan 07 Javascript
JS中substring与substr的用法
Nov 16 Javascript
浅谈JavaScript中的属性:如何遍历属性
Sep 14 Javascript
vue-cli webpack 引入jquery的方法
Jan 10 jQuery
react 应用多入口配置及实践总结
Oct 17 Javascript
从0到1构建vueSSR项目之路由的构建
Mar 07 Javascript
JavaScript获取当前url路径过程解析
Dec 27 Javascript
基于javascript实现碰撞检测
Mar 12 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
Syphon 秘笈
2021/03/03 冲泡冲煮
PHP Curl多线程原理实例详解
2013/11/06 PHP
Zend Framework教程之Zend_Layout布局助手详解
2016/03/04 PHP
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
PHP数组常用函数实例小结
2018/08/20 PHP
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
2009/10/24 Javascript
javascript 面向对象的JavaScript类
2010/05/04 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
jquery图片放大功能简单实现
2013/08/01 Javascript
纯Javascript实现Windows 8 Metro风格实现
2013/10/15 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
JavaScript模板引擎用法实例
2015/07/10 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
JS折半插入排序算法实例
2015/12/02 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
2016/07/21 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
JavaScript事件发布/订阅模式原理与用法分析
2018/08/21 Javascript
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
使用Python操作MySQL的一些基本方法
2015/08/16 Python
python读取与写入csv格式文件的示例代码
2017/12/16 Python
用十张图详解TensorFlow数据读取机制(附代码)
2018/02/06 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
2019/12/25 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
终于搞懂了Keras中multiloss的对应关系介绍
2020/06/22 Python
法学毕业生自荐信
2013/11/13 职场文书
七年级历史教学反思
2014/02/05 职场文书
花店创业计划书范文
2014/02/07 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
2014年技术员工作总结
2014/11/18 职场文书
伏羲庙导游词
2015/02/09 职场文书
小学教师师德师风承诺书
2015/04/28 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书
JavaScript 数组去重详解
2021/09/15 Javascript
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫