ES6 Iterator接口和for...of循环用法分析


Posted in Javascript onJuly 31, 2019

本文实例讲述了ES6 Iterator接口和for...of循环用法。分享给大家供大家参考,具体如下:

<script>
// 数组已经帮我们内置这个Iterator接口
let arr = ['hello','world'];
let map = arr[Symbol.iterator](); // 数组直接调用iterator接口,返回一个对象map
console.log(map.next()); // {value: "hello", done: false} done:循环没有下一步状态:true没有,false:有状态,循环并没有结束
console.log(map.next()); // {value: "world", done: false}
console.log(map.next()); // {value: undefined, done: true}
</script>

运行结果:

ES6 Iterator接口和for...of循环用法分析

for...of循环,就是不断的调用Iterator接口。

object数据结构没有实现Iterator接口。

自定义实现object的Iterator接口

<script>
let obj ={
  start: [1,5,7],
  end:[8,4,3],
  [Symbol.iterator](){
   let self = this;
   let index = 0;
   let arr = self.start.concat(self.end);
   let len = arr.length;
   return {
    next(){
     if(index<len){
      return{
       value:arr[index++],
       done:false
      }
     }else{
      return {
       value:arr[index++],
       done:true
      }
     }
    }
   }
  }
}
for(let key of obj){ // for...of 背后用的就是iterator接口
  console.log(key); // 1 5 7 8 4 3
}
</script>

运行结果:

ES6 Iterator接口和for...of循环用法分析

<script>
let arr = ['xixiaoxian','jamin'];
for(let value of arr){
  console.log(value); // xixiaoxian  jamin
}
</script>

运行结果:

ES6 Iterator接口和for...of循环用法分析

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
用JavaScript事件串连执行多个处理过程的方法
Mar 09 Javascript
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
Jan 27 Javascript
js借助ActiveXObject实现创建文件
Sep 29 Javascript
常见表单重复提交问题整理及解决方法
Nov 13 Javascript
js实现禁止中文输入的方法
Jan 14 Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
May 08 Javascript
JQuery插件jcarousellite的参数中文说明
May 11 Javascript
JS实现刷新父页面不弹出提示框的方法
Jun 22 Javascript
Bootstrap CSS布局之表单
Dec 17 Javascript
ReactNative踩坑之配置调试端口的解决方法
Jul 28 Javascript
vue 获取url里参数的两种方法小结
Nov 12 Javascript
Vue的列表之渲染,排序,过滤详解
Feb 24 Vue.js
Vuex 模块化使用详解
Jul 31 #Javascript
判断“命令按钮”是否被鼠标单击详解
Jul 31 #Javascript
express框架下使用session的方法
Jul 31 #Javascript
ES6中异步对象Promise用法详解
Jul 31 #Javascript
JS实现在线ps功能详解
Jul 31 #Javascript
ES6中定义类和对象的方法示例
Jul 31 #Javascript
Vue+Koa2 打包后进行线上部署的教程详解
Jul 31 #Javascript
You might like
PHP的SQL注入过程分析
2012/01/06 PHP
PHP创建PowerPoint2007文档的方法
2015/12/10 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
JS实现浏览器菜单命令
2006/09/05 Javascript
用于节点操作的API,颠覆原生操作HTML DOM节点的API
2010/12/11 Javascript
jQuery EasyUI API 中文文档 - Documentation 文档
2011/09/29 Javascript
firefox下input type=&quot;file&quot;的size是多大
2011/10/24 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
2016/12/24 Javascript
JavaScript中双向数据绑定详解
2017/05/03 Javascript
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
JQuery animate动画应用示例
2019/05/14 jQuery
JS数组方法concat()用法实例分析
2020/01/18 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
2020/07/13 Javascript
JS中的变量作用域(console版)
2020/07/18 Javascript
openlayers4实现点动态扩散
2020/08/17 Javascript
使用python实现strcmp函数功能示例
2014/03/25 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
2021/02/22 Python
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
opencv实现图像几何变换
2021/03/24 Python
教师应聘个人求职信
2013/12/10 职场文书
给女朋友的道歉信
2014/01/10 职场文书
技术负责人任命书
2014/06/05 职场文书
股东合作协议书
2014/09/12 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
2014年妇联工作总结
2014/11/21 职场文书
详解用Python把PDF转为Word方法总结
2021/04/27 Python
HDFS免重启挂载新磁盘
2022/04/06 Servers
vue-cli3.x配置全局的scss的时候报错问题及解决
2022/04/30 Vue.js