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 相关文章推荐
ExtJS 2.0实用简明教程之应用ExtJS
Apr 29 Javascript
javascrpt绑定事件之匿名函数无法解除绑定问题
Dec 06 Javascript
javascript写的一个模拟阅读小说的程序
Apr 04 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
Apr 12 Javascript
javascript闭包入门示例
Apr 30 Javascript
jQuery功能函数详解
Feb 01 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
Aug 10 Javascript
js实现String.Fomat的实例代码
Sep 02 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
Mar 21 Javascript
Vue渲染过程浅析
Mar 14 Javascript
vue 实现把路由单独分离出来
Aug 13 Javascript
vue-cli中实现响应式布局的方法
Mar 02 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中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
2011/10/23 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
PHP中redis的用法深入解析
2014/02/20 PHP
PHP实现过滤掉非汉字字符只保留中文字符
2015/06/04 PHP
PHP中有关长整数的一些操作教程
2019/09/11 PHP
Node.js中require的工作原理浅析
2014/06/24 Javascript
javascript 回调函数详解
2014/11/11 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
2016/07/27 Javascript
jquery基本选择器匹配多个元素的实现方法
2016/09/05 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
2017/06/19 Javascript
微信小程序签到功能
2018/10/31 Javascript
使用koa2创建web项目的方法步骤
2019/03/12 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
[16:01]夜魇凡尔赛茶话会 第二期01:你比划我猜
2021/03/11 DOTA
python如何使用unittest测试接口
2018/04/04 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
2018/05/22 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
python FTP编程基础入门
2021/02/27 Python
深入理解HTML的FormData对象
2016/05/17 HTML / CSS
奥地利网上书店:Weltbild
2017/07/14 全球购物
软件测试有哪些?什么是配置项?
2012/02/12 面试题
小学端午节活动方案
2014/03/13 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
中职毕业生自我鉴定
2014/09/13 职场文书
新娘父亲婚礼致辞
2015/07/27 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
Java org.w3c.dom.Document 类方法引用报错
2021/08/07 Java/Android
MySQL实例精讲单行函数以及字符数学日期流程控制
2021/10/15 MySQL
vue中使用mockjs配置和使用方式
2022/04/06 Vue.js