一、概述数组
Iterator 的做用有三个:一是为各类数据结构,提供一个统一的、简便的访问接口;二是使得数据结构的成员可以按某种次序排列;三是 ES6 创造了一种新的遍历命令for...of
循环,Iterator 接口主要供for...of循环
。数据结构
二、Iterator 接口函数
ES6 的有些数据结构原生具有 Iterator 接口(好比数组),即不用任何处理,就能够被for...of
循环遍历。缘由在于,这些数据结构原生部署了Symbol.iterator
属性,另一些数据结构没有(好比对象)。凡是部署了Symbol.iterator
属性的数据结构,就称为部署了遍历器接口。调用这个接口,就会返回一个遍历器对象。spa
原生具有 Iterator 接口的数据结构以下。code
三、只要某个数据结构部署了 Iterator 接口,就能够对它使用扩展运算符,将其转为数组。对象
let arr = [...iterable];
四、for...ofblog
JavaScript 原有的for...in
循环,只能得到对象的键名,不能直接获取键值。ES6 提供for...of
循环,容许遍历得到键值。索引
var arr = ['a', 'b', 'c', 'd']; for (let a in arr) { console.log(a); // 0 1 2 3
} for (let a of arr) { console.log(a); // a b c d
}
Set 结构和 Map 结构=遍历的顺序是按照各个成员被添加进数据结构的顺序。其次,Set 结构遍历时,返回的是一个值,而 Map 结构遍历时,返回的是一个数组,该数组的两个成员分别为当前 Map 成员的键名和键值。
entries()
返回一个遍历器对象,用来遍历[键名, 键值]
组成的数组。对于数组,键名就是索引值;对于 Set,键名与键值相同。Map 结构的 Iterator 接口,默认就是调用entries
方法。