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 相关文章推荐
js利用与或运算符优先级实现if else条件判断表达式
Apr 15 Javascript
JSChart轻量级图形报表工具(内置函数中文参考)
Oct 11 Javascript
javascript面向对象编程代码
Dec 19 Javascript
location对象的属性和方法应用(解析URL)
Apr 12 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
Oct 17 Javascript
JQuery解析HTML、JSON和XML实例详解
Mar 29 Javascript
DOM 高级编程
May 06 Javascript
JS获取html元素的标记名实现方法
Oct 08 Javascript
JavaScript html5 canvas实现图片上画超链接
Oct 20 Javascript
详解使用uni-app开发微信小程序之登录模块
May 09 Javascript
react国际化化插件react-i18n-auto使用详解
Mar 31 Javascript
jQuery实现的分页插件完整示例
May 26 jQuery
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编译安装php-amq扩展简明教程
2016/06/25 PHP
thinkPHP框架实现的无限回复评论功能示例
2018/06/09 PHP
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
jQuery学习笔记之jQuery选择器的使用
2010/12/22 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
2015/03/04 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
angularjs点击图片放大实现上传图片预览
2017/02/24 Javascript
javascript实现下雨效果
2017/03/27 Javascript
Bootstrap实现的标签页内容切换显示效果示例
2017/05/25 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
bootstrap Table的一些小操作
2017/11/01 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
详解vue-admin和后端(flask)分离结合的例子
2018/02/12 Javascript
angularJs自定义过滤器实现手机号信息隐藏的方法
2018/10/08 Javascript
js自定义input文件上传样式
2018/10/26 Javascript
Vue this.$router.push(参数)实现页面跳转操作
2020/09/09 Javascript
jQuery-App输入框实现实时搜索
2020/11/19 jQuery
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
详解Python中的type()方法的使用
2015/05/21 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
2020/01/15 Python
.img/.hdr格式转.nii格式的操作
2020/07/01 Python
Python之字典添加元素的几种方法
2020/09/30 Python
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
Rakuten Kobo台湾:电子书、eReaders和Reading应用程式
2017/11/24 全球购物
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
警察思想汇报
2014/01/04 职场文书
大学生军训自我鉴定
2014/02/12 职场文书
会展策划与管理专业求职信
2014/06/09 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
详细谈谈JavaScript中循环之间的差异
2021/08/23 Javascript