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 01 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
May 30 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
Dec 16 Javascript
jQuery中removeClass()方法用法实例
Jan 05 Javascript
JS获取年月日时分秒的方法分析
Nov 28 Javascript
关于Function中的bind()示例详解
Dec 02 Javascript
bootstrap suggest下拉框使用详解
Apr 10 Javascript
Vue实现选择城市功能
May 27 Javascript
Javascript快速实现浏览器系统通知
Aug 26 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
Jan 11 Javascript
JavaScript字符串处理常见操作方法小结
Nov 15 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
Dec 04 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 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
实现超用户体验 table排序javascript实现代码
2009/06/22 Javascript
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
javascript数字格式化通用类 accounting.js使用
2012/08/24 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
js关于精确计算和数值格式化以及直接引js文件
2014/01/28 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
JavaScript代码判断点击第几个按钮
2015/12/13 Javascript
vue.js表格分页示例
2016/10/18 Javascript
easyui form validate总是返回false的原因及解决方法
2016/11/07 Javascript
JavaScript实现隐藏省略文字效果的方法
2017/04/27 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
vue.js学习笔记之v-bind和v-on解析
2018/05/03 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
2018/08/09 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
vue按需加载实例详解
2019/09/06 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
微信小程序实现打卡签到页面
2020/09/21 Javascript
Python实现的直接插入排序算法示例
2018/04/29 Python
如何爬取通过ajax加载数据的网站
2019/08/15 Python
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
英国家居装饰品、户外家具和玻璃器皿购物网站:Rinkit.com
2019/11/04 全球购物
工作表现评语
2014/01/19 职场文书
JAVA程序员自荐书
2014/01/30 职场文书
检查接待方案
2014/02/27 职场文书
党风廉设责任书
2014/04/16 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书