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步骤进度条源码分享
Nov 12 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
Dec 10 Javascript
学习JavaScript设计模式之装饰者模式
Jan 19 Javascript
AngularJS 依赖注入详解及示例代码
Aug 17 Javascript
模板视图和AngularJS之间冲突的解决方法
Nov 22 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
Mar 21 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
Jun 21 Javascript
js实现水平滚动菜单导航
Jul 21 Javascript
javascript计算渐变颜色的实例
Sep 22 Javascript
jquery实现图片跟随鼠标的实例
Oct 17 jQuery
echarts实现地图定时切换散点与多图表级联联动详解
Aug 07 Javascript
javascript异步编程的六种方式总结
May 17 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
PHP Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
php smarty模版引擎中的缓存应用
2009/12/11 PHP
Yii框架用户登录session丢失问题解决方法
2017/01/07 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
2020/05/27 PHP
JQuery 学习笔记 选择器之五
2009/07/23 Javascript
一句话JavaScript表单验证代码
2009/08/02 Javascript
浅谈Javascript事件模拟
2012/06/27 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
2015/03/03 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
基于vue2实现上拉加载功能
2017/11/28 Javascript
vue拖拽排序插件vuedraggable使用方法详解
2020/08/21 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
浅析Angular 实现一个repeat指令的方法
2019/07/21 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
2019/08/20 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
2020/04/07 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
2020/08/20 NodeJs
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
Python txt文件如何转换成字典
2020/11/03 Python
英国亚马逊官方网站:Amazon.co.uk
2019/08/09 全球购物
学期自我鉴定范文
2013/10/01 职场文书
丑小鸭教学反思
2014/02/03 职场文书
设备动力科岗位职责范本
2014/02/23 职场文书
大学生学雷锋活动总结
2014/06/26 职场文书
贯彻落实“八项规定”思想汇报
2014/09/13 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
2014年技术员工作总结
2014/11/18 职场文书
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技