博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
es6--iterator 和 for...of
阅读量:5780 次
发布时间:2019-06-18

本文共 1158 字,大约阅读时间需要 3 分钟。

什么是iterator

es6中map set arr obj 这4种数据对象 这样就需要一种统一的接口机制来处理所有不同的数据结构

作用:
1、为各种数据结构提供一个同一的、简便的数据接口
2、使得数据结构的成员按照某种次序排列
3、es6 新增了 for..of循环 来遍历iterator

iterator就是通过不断的next来访问值{value:value}

手写iterator

var arr=[1,2,3]     function iterator(arr) {         let index=0;         return {             next:function () {                 return index

数组 set map 字符串 天生具备iterator遍历器接口

检测一个数组解构是否天生就具有iterator?

是否具有Symbol.iterator属性

var arr1=[1,2,3];    var set1=new Set(['a','b','c'])    var map1=new Map([['a',1],['b',2]])  //一定要正确的定义Map         var str="sasa";     var ai=arr1[Symbol.iterator]();    var si=set1[Symbol.iterator]();    var mi=map1[Symbol.iterator]();    console.log(ai,si,mi)  //就会返回数组、集合、map的遍历器接口        console.log(str[Symbol.iterator]())  字符串的遍历器接口

但是object是没有Symbol.iterator这个属性的

var obj={};    console.log(obj[Symbol.iterator]())  //报错

具备iterator接口的集合都能够进行哪些操作

1、解构赋值

2、扩展运算符 ...将一个数据结构展开

var str="sasa";     var arrstr=[...str];     console.log(arrstr)

利用这个原理实现数组去重

var arrchong=[1,2,3,1,1,3,34,4,1];    console.log([...(new Set(arrchong))])

3、都可以是用for of循环

var arrchong=[1,2,3,1,1,3,34,4,1];    for(let i of arrchong){        console.log(i)    }

转载地址:http://dxuyx.baihongyu.com/

你可能感兴趣的文章
js原生继承之——构造函数式继承实例
查看>>
linux定时任务的设置
查看>>
[CareerCup] 13.3 Virtual Functions 虚函数
查看>>
[Angular 2] ng-model and ng-for with Select and Option elements
查看>>
Tasks and Back stack 详解
查看>>
关于EXPORT_SYMBOL的作用浅析
查看>>
成功的背后!(给所有IT人)
查看>>
在SpringMVC利用MockMvc进行单元测试
查看>>
Nagios监控生产环境redis群集服务战
查看>>
Angular - -ngKeydown/ngKeypress/ngKeyup 键盘事件和鼠标事件
查看>>
Android BlueDroid(一):BlueDroid概述
查看>>
Java利用httpasyncclient进行异步HTTP请求
查看>>
宿舍局域网的应用
查看>>
html代码究竟什么用途
查看>>
oracle的substr函数的用法
查看>>
Hadoop HDFS编程 API入门系列之路径过滤上传多个文件到HDFS(二)
查看>>
Nginx反向代理,负载均衡,redis session共享,keepalived高可用
查看>>
CentOS7 yum 安装git
查看>>
三元表达式之理解/jquery源代码分析之$.inArray实现
查看>>
STM32 mdk软件仿真时过不去时钟的问题
查看>>