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 相关文章推荐
jquery 1.3.2 IE8中的一点点的小问题解决方法
Jul 10 Javascript
MooTools 1.2中的Drag.Move来实现拖放
Sep 15 Javascript
ASP.NET jQuery 实例2 (表单中使用回车在TextBox之间向下移动)
Jan 13 Javascript
使用iframe window的scroll方法控制iframe页面滚动
Mar 05 Javascript
AngularJs基本特性解析(一)
Jul 21 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
Oct 10 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
Oct 11 Javascript
jQuery将表单序列化成一个Object对象的实例
Nov 29 Javascript
jquery中用函数来设置css样式
Dec 22 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
Mar 08 Javascript
JQueryMiniUI按照时间进行查询的实现方法
Jun 07 jQuery
vue 文件目录结构详解
Nov 24 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
探讨fckeditor在Php中的配置详解
2013/06/08 PHP
PHP 函数call_user_func和call_user_func_array用法详解
2014/03/02 PHP
php中try catch捕获异常实例详解
2014/11/21 PHP
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
javascript中的对象和数组的应用技巧
2007/01/07 Javascript
juqery 学习之五 文档处理 插入
2011/02/11 Javascript
jQuery之排序组件的深入解析
2013/06/19 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
js 显示base64编码的二进制流网页图片
2014/04/04 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
js时间控件只显示年月
2017/01/08 Javascript
微信小程序 scroll-view实现上拉加载与下拉刷新的实例
2017/01/21 Javascript
在Vue中使用echarts的方法
2018/02/05 Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
2018/05/15 Javascript
Vue封装的可编辑表格插件方法
2018/08/28 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
2019/02/18 jQuery
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
2014/01/19 Python
Python NumPy库安装使用笔记
2015/05/18 Python
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
python3 图片referer防盗链的实现方法
2018/03/12 Python
python3第三方爬虫库BeautifulSoup4安装教程
2018/06/19 Python
python 生成图形验证码的方法示例
2018/11/11 Python
Python实现把多维数组展开成DataFrame
2019/11/30 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
EJB实例的生命周期
2016/10/28 面试题
中班上学期幼儿评语
2014/04/30 职场文书
爱心捐助倡议书
2014/05/19 职场文书
校长一岗双责责任书
2015/05/09 职场文书
离婚起诉书范文2015
2015/05/19 职场文书
企业党建工作总结2015
2015/05/26 职场文书
农村老人去世追悼词
2015/06/23 职场文书