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 相关文章推荐
Javascript实现获取窗口的大小和位置代码分享
Dec 04 Javascript
基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
Sep 06 Javascript
基于jQuery滑动杆实现购买日期选择效果
Sep 15 Javascript
深入理解js函数的作用域与this指向
May 28 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
Jun 03 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
Sep 08 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
Oct 24 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
Dec 25 Javascript
AngularJS实现的输入框字数限制提醒功能示例
Oct 26 Javascript
JS实现字符串翻转的方法分析
Aug 31 Javascript
JS无限级导航菜单实现方法
Jan 05 Javascript
Vue-Element-Admin集成自己的接口实现登录跳转
Jun 23 Vue.js
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
利用PHP创建动态图像
2006/10/09 PHP
php实现的单一入口应用程序实例分析
2015/09/23 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
round robin权重轮循算法php实现代码
2016/05/28 PHP
php获取微信openid方法总结
2019/10/10 PHP
js函数般调用正则
2008/04/08 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
2013/05/17 Javascript
JavaScript生成GUID的多种算法小结
2013/08/18 Javascript
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
JS实现仿京东淘宝竖排二级导航
2014/12/08 Javascript
JavaScript中自定义事件用法分析
2014/12/23 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
2015/08/27 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
JS基于正则表达式的替换操作(replace)用法示例
2017/04/28 Javascript
详解搭建es6+devServer简单开发环境
2018/09/25 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
2019/07/10 Javascript
JavaScript Dom实现轮播图原理和实例
2021/02/19 Javascript
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
python实现的希尔排序算法实例
2015/07/01 Python
浅谈使用Python内置函数getattr实现分发模式
2018/01/22 Python
用python标准库difflib比较两份文件的异同详解
2018/11/16 Python
Python中*args和**kwargs的区别详解
2019/09/17 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
利用Python优雅的登录校园网
2020/10/21 Python
python 实现超级玛丽游戏
2020/11/25 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
浅谈Html5移动端ios/Android兼容性总结
2018/06/01 HTML / CSS
Canvas获取视频第一帧缩略图的实现
2020/11/11 HTML / CSS
设计师珠宝:Ylang 23
2018/05/11 全球购物
硕士学位论文评语
2014/12/31 职场文书
九年级历史教学反思
2016/02/19 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书
PyTorch的Debug指南
2021/05/07 Python
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
2021/06/11 Python
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技