迭代器


JavaScript提供了四种数据集合,分别是array、object、map和set。

这四种数据集合的数据结构各不相同,但是都可以被循环遍历,这一切的背后都离不开iteration(迭代器)的支撑。

遍历器(Iterator)是一种机制,也可以说是一种接口,它为各种不同的数据结构提供了统一的访问机制。

//迭代器
let arr = [1, 2, 3, 4]
const fn = arr[Symbol.iterator]();
fn.next();
fn.next()

任何数据结构只要配置了 Iterator 接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)

当我们使用for…of循环遍历数组数据结构时,该循环会自动去寻找 Iterator 接口并执行遍历操作。

在js里原生具备 Iterator 接口的数据结构如下:

Array
Map
Set
String
TypedArray
函数的 arguments 对象
NodeList 对象
因此,上面的任意一个数据类型都支持for…of遍历,也可以调用自身的symbol.iteration方法,举个🌰:

let arr = ['a', 'b', 'c'];
//调用原生Symbol.iterator方法,返回一个遍历器对象
let iter = arr[Symbol.iterator]();
//调用遍历器上面的next方法,返回一个代表当前成员的信息对象
iter.next() // { value: 'a', done: false }
iter.next() // { value: 'b', done: false }
iter.next() // { value: 'c', done: false }
iter.next() // { value: undefined, done: true }

文章作者: iamfugui
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 iamfugui !
评论
  目录