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 相关文章推荐
Mootools 1.2教程 Tooltips
Sep 15 Javascript
js 获取中文拼音,Select自动匹配字母获取值的代码
Sep 23 Javascript
javascript 跳转代码集合
Dec 03 Javascript
json中换行符的处理方法示例介绍
Jun 10 Javascript
使用jquery动态加载Js文件和Css文件
Oct 24 Javascript
Node.js 日志处理模块log4js
Aug 28 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
Mar 21 jQuery
微信小程序与php 实现微信支付的简单实例
Jun 23 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
Mar 20 Javascript
详解Vue项目编译后部署在非网站根目录的解决方案
Apr 26 Javascript
vuejs实现ready函数加载完之后执行某个函数的方法
Aug 31 Javascript
vue中子组件传递数据给父组件的讲解
Jan 27 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
PHP中的MYSQL常用函数(php下操作数据库必备)
2010/09/12 PHP
PHP读取XML值的代码(推荐)
2011/01/01 PHP
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
php语言中使用json的技巧及json的实现代码详解
2015/10/27 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
js获取URL的参数的方法(getQueryString)示例
2013/09/29 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
2016/08/16 Javascript
纯前端JavaScript实现Excel IO案例分享
2016/08/26 Javascript
在Vue methods中调用filters里的过滤器实例
2018/08/30 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
Vue 重置组件到初始状态的方法示例
2018/10/10 Javascript
vue弹出框组件封装实例代码
2019/10/31 Javascript
前端性能优化建议
2020/09/17 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
2020/11/04 Javascript
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
Python的条件锁与事件共享详解
2019/09/12 Python
Python递归实现打印多重列表代码
2020/02/27 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
python实现一个简单RPC框架的示例
2020/10/28 Python
Python抓包并解析json爬虫的完整实例代码
2020/11/03 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
2020/12/16 Python
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
三年级音乐教学反思
2014/01/28 职场文书
酒店经理职责
2014/01/30 职场文书
2014年英语教师工作总结
2014/12/03 职场文书
人事局接收函
2015/01/30 职场文书
二十年同学聚会致辞
2015/07/28 职场文书
2016年春节问候语
2015/11/11 职场文书
2016民族团结先进个人事迹材料
2016/02/26 职场文书
python实现图片批量压缩
2021/04/24 Python