ECMAscript6快速入门-iterator
来源:互联网 发布:晋中市教育网络平台 编辑:程序博客网 时间:2024/06/05 23:41
1.Iterator( 遍历器) 的概念
JavaScript 原有的表示“ 集合” 的数据结构, 主要是数组( Array) 和对象( Object), ES6 又添加了 Map 和 Set。 这样就有了四种数据集合, 用户还可以组合使用它们, 定义自己的数据结构, 比如数组的成员是 Map, Map 的成员是对象。 这样就需要一种统一的接口机制, 来处理所有不同的数据结构。
es6中新增了 for..of 循环
- 手写Iterator接口
const arr = [1,2,3];function iterator(arr){ let index = 0; return { next : function(){ return index<arr.length? {value:arr[index++],done:false}: {value:undefind,done:true} } }}
在 ES6 中, 有些数据结构原生具备 Iterator 接口( 比如数组), 即不用任何处理, 就可以被for…of循环遍历, 有些就不行( 比如对象)。 原因在于,这些数据结构原生部署了Symbol.iterator属性( 详见下文), 另外一些数据结构没有。 凡是部署了Symbol.iterator属性的数据结构, 就称为部署了遍历器接口。 调用这个接口, 就会返回一个遍历器对象。
2.具有Symbol.iterator 属性的数据结构都具有Iterator接口
const arr = [1,2,3];const set = new Set([1,2,3]);const map = new Map([[1,2],[3,4]]);arr[Symbol.iterator]();set[Symbol.iterator]();map[Symbol.iterator]();
3.具备iterator接口的数据结构都可以进行如下操作
1.解构赋值
const set = new Set([1,2,3]);let [x,y,z] = set;console.log(x,y,z);
2.扩展运算符
let str = 'hongtao';let arrStr = [...str];
利用set进行数组去重
const arr = [1,1,'a','b','a',2,1];console.log([...new Set(arr)]);
3.for…of循环
const ofarr = [1,2,3,4];for(let i of ofarr){ console.log(i);}
const map = new Map();map.set('a',1).set('b',2).set('c',3);for(let data of map){ console.log(data)//['a',1].....}for(let [key,value] of map){ console.log(key,value);}
阅读全文
0 0
- ECMAscript6快速入门-iterator
- ECMAscript6快速入门-Symbol
- ECMAscript6快速入门-Class
- ECMAscript6快速入门-let和const
- ECMAscript6快速入门-set和map
- ECMAscript6快速入门-函数的扩展
- 【ES6】 — ECMAScript6快速入门01
- 【ES6】 — ECMAScript6快速入门02
- 【ES6】 — ECMAScript6快速入门03
- ECMAScript6(14):iterator 迭代器
- ECMAScript6入门
- ECMAScript6快速入手攻略
- ECMAScript6快速入手攻略
- EcmaScript6学习之入门
- ECMAScript6入门-笔记
- 【ECMAScript6标准入门】String
- ECMAScript6标准Iterator和for...of循环
- ECMAScript6笔记:Iterator和for...of循环
- google 官方ndk demo解析(二)——bitmap-plasma
- "<Module>"的类型初始值设定项引发异常的解决办法
- 2017云栖大会·杭州峰会:《云数据·大计算:海量日志数据分析与应用》之《数据分析展现:可视化报表及嵌入应用》篇
- Java——I/O
- F
- ECMAscript6快速入门-iterator
- Chinese Whispers 聚类算法
- HTML使用JS导出Excel(五种方法)
- 帆软报表-聚合报表使用方法
- com_lar
- LVS(二)——环境的搭建
- linux系统命令行基本操作——文件管理
- set.seed()实现了可重复的随机
- spring boot初学入门-安装启动报错