ES6 Iterator

一、概述数组

Iterator 的做用有三个:一是为各类数据结构,提供一个统一的、简便的访问接口;二是使得数据结构的成员可以按某种次序排列;三是 ES6 创造了一种新的遍历命令for...of循环,Iterator 接口主要供for...of循环数据结构

二、Iterator 接口函数

ES6 的有些数据结构原生具有 Iterator 接口(好比数组),即不用任何处理,就能够被for...of循环遍历。缘由在于,这些数据结构原生部署了Symbol.iterator属性,另一些数据结构没有(好比对象)。凡是部署了Symbol.iterator属性的数据结构,就称为部署了遍历器接口。调用这个接口,就会返回一个遍历器对象。spa

原生具有 Iterator 接口的数据结构以下。code

  • Array
  • Map
  • Set
  • String
  • TypedArray
  • 函数的 arguments 对象
  • NodeList 对象

三、只要某个数据结构部署了 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方法。
相关文章
相关标签/搜索