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 相关文章推荐
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
Jul 20 Javascript
js模拟滚动条(横向竖向)
Feb 22 Javascript
使用jQuery和PHP实现类似360功能开关效果
Feb 12 Javascript
JS的location.href跳出框架打开新页面的方法
Sep 04 Javascript
javascript制作坦克大战全纪录(1)
Nov 27 Javascript
jQuery实现自动调整字体大小的方法
Jun 15 Javascript
JavaScript中的this到底是什么(一)
Dec 09 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
May 12 Javascript
layui实现tab的添加拒绝重复的方法
Sep 04 Javascript
微信小程序自定义弹出层效果
May 26 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
Jan 13 Vue.js
Ajax是什么?Ajax高级用法之Axios技术
Apr 21 Javascript
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版(3)
2006/10/09 PHP
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
基于递归实现的php树形菜单代码
2014/11/19 PHP
PHP+iframe模拟Ajax上传文件功能示例
2019/07/02 PHP
10个基于Jquery的幻灯片插件教程
2010/10/29 Javascript
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
在JavaScript中处理时间之setMinutes()方法的使用
2015/06/11 Javascript
Angularjs实现mvvm式的选项卡示例代码
2016/09/08 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
2016/10/26 Javascript
jQuery操作复选框(CheckBox)的取值赋值实现代码
2017/01/10 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
分享Bootstrap简单表格、表单、登录页面
2017/08/04 Javascript
node-sass安装失败的原因与解决方法
2017/09/04 Javascript
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
javascript异步处理与Jquery deferred对象用法总结
2019/06/04 jQuery
[37:45]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第二场 12.09
2020/12/11 DOTA
python encode和decode的妙用
2009/09/02 Python
浅析Python基础-流程控制
2016/03/18 Python
Python MD5加密实例详解
2017/08/02 Python
python 图片二值化处理(处理后为纯黑白的图片)
2019/11/01 Python
django 连接数据库出现1045错误的解决方式
2020/05/14 Python
容易被忽略的Python内置类型
2020/09/03 Python
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
创联软件面试题笔试题
2012/10/07 面试题
夜班门卫岗位职责
2013/12/09 职场文书
人力资源管理系自荐信
2014/05/31 职场文书
庐山导游词
2015/02/03 职场文书
努力工作保证书
2015/02/28 职场文书
杨善洲观后感
2015/06/04 职场文书
python使用pygame创建精灵Sprite
2021/04/06 Python
Golang ort 中的sortInts 方法
2022/04/24 Golang
MySQL串行化隔离级别(间隙锁实现)
2022/06/16 MySQL
nginx配置指令之server_name的具体使用
2022/08/14 Servers