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打印网页部分内容的脚本
Nov 17 Javascript
Jquery使用小技巧汇总
Dec 29 Javascript
vuejs响应用户事件(如点击事件)
Mar 14 Javascript
bootstrap轮播图示例代码分享
May 17 Javascript
vue中的非父子间的通讯问题简单的实例代码
Jul 19 Javascript
jQuery实现全选、反选和不选功能
Aug 16 jQuery
Vue Transition实现类原生组件跳转过渡动画的示例
Aug 19 Javascript
详解Vue 中 extend 、component 、mixins 、extends 的区别
Dec 20 Javascript
vue中使用input[type=&quot;file&quot;]实现文件上传功能
Sep 10 Javascript
JS动画实现回调地狱promise的实例代码详解
Nov 08 Javascript
Vue 3.0双向绑定原理的实现方法
Oct 23 Javascript
基于js实现的图片拖拽排序源码实例
Nov 04 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
服务器变量 $_SERVER 的深入解析
2013/07/02 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
Linux下手动编译安装PHP扩展的例子分享
2014/07/15 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
2018/10/23 PHP
javascript 读取图片文件的大小
2009/06/25 Javascript
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
html5+javascript制作简易画板附图
2014/04/25 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
浅谈javascript中的instanceof和typeof
2015/02/27 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
2015/07/01 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
jQuery查看选中对象HTML代码的方法
2016/06/17 Javascript
Node.js连接MongoDB数据库产生的问题
2017/02/08 Javascript
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
element-ui中按需引入的实现
2019/12/25 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
详解JavaScript中分解数字的三种方法
2021/01/05 Javascript
[59:08]Ti4 冒泡赛第二天 NEWBEE vs Titan 2
2014/07/15 DOTA
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
详解Python中find()方法的使用
2015/05/18 Python
Windows下实现Python2和Python3两个版共存的方法
2015/06/12 Python
对python中if语句的真假判断实例详解
2019/02/18 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
Agoda台湾官网:国内外订房2折起
2018/03/20 全球购物
StringBuilder和String的区别
2015/05/18 面试题
工商学院毕业生个人自我评价
2013/09/19 职场文书
历史学专业毕业生求职信
2013/09/27 职场文书
2014年党员学习“三严三实”思想汇报
2014/09/15 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
乡镇防汛工作汇报
2014/10/28 职场文书