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 相关文章推荐
非常好的js代码
Jun 27 Javascript
Extjs中常用表单介绍与应用
Jun 07 Javascript
一个基于jquery的图片切换效果
Jul 06 Javascript
JS.getTextContent(element,preformatted)使用介绍
Sep 21 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
Dec 17 Javascript
静态页面html中跳转传值的JS处理技巧
Jun 22 Javascript
概述jQuery的元素筛选
Nov 23 Javascript
最常见和最有用的字符串相关的方法详解
Feb 06 Javascript
layui文件上传实现代码
May 20 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
Oct 10 Javascript
vue拖拽排序插件vuedraggable使用方法详解
Aug 21 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
Oct 16 jQuery
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获取url字符串截取路径的文件名和扩展名的函数
2010/01/22 PHP
php中spl_autoload详解
2014/10/17 PHP
学习php开源项目的源码指南
2014/12/21 PHP
Laravel 5 框架入门(一)
2015/04/09 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
PHP7 新增功能
2021/03/09 PHP
javascript的onchange事件与jQuery的change()方法比较
2009/09/28 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
2016/01/04 Javascript
使用 stylelint检查CSS_StyleLint
2016/04/28 Javascript
浅析Bootstrip的select控件绑定数据的问题
2016/05/10 Javascript
Bootstrap Navbar Component实现响应式导航
2016/10/08 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
2017/03/21 jQuery
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
vue轮播图插件vue-awesome-swiper
2017/11/27 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
2018/01/15 Javascript
修改npm全局安装模式的路径方法
2018/05/15 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
NodeJS实现同步的方法
2019/03/02 NodeJs
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
python实现用于测试网站访问速率的方法
2015/05/26 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
Python函数式编程
2017/07/20 Python
Python实例方法、类方法、静态方法的区别与作用详解
2019/03/25 Python
Windows平台Python编程必会模块之pywin32介绍
2019/10/01 Python
Keras 使用 Lambda层详解
2020/06/10 Python
书法比赛获奖感言
2014/02/10 职场文书
民生工程实施方案
2014/03/22 职场文书
房产公证书
2015/01/23 职场文书
优秀班主任工作总结2015
2015/05/25 职场文书
常用的MongoDB查询语句的示例代码
2021/07/25 MongoDB