ES6 都有什么 iterator 遍历器
Set、Map
解析
1. Iterator 是什么
遍历器(Iterator)是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署 Iterator 接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)。
ES6 规定,默认部署了 Iterator 接口的数据结构有:Array、Map、Set、String、TypedArray、函数的 arguments 对象、NodeList。其中重点常用的是 Array、Map、Set。
2. Iterator 的作用
- 为各种数据结构提供统一的、便捷的访问接口。
- 让成员能够按某种次序排列。
- 创造了
for...of消费接口(消费 Iterator 的数据)。
3. Iterator 的遍历过程
const it = [1, 2, 3][Symbol.iterator]();
it.next(); // { value: 1, done: false }
it.next(); // { value: 2, done: false }
it.next(); // { value: 3, done: false }
it.next(); // { value: undefined, done: true }
for (const v of [10, 20, 30]) {
console.log(v); // 10 20 30
}
补充:让普通对象也支持
for...of:
const obj = { a: 1, b: 2, c: 3 };
obj[Symbol.iterator] = function () {
const keys = Object.keys(this);
let i = 0;
return {
next: () => ({ value: this[keys[i++]], done: i > keys.length }),
};
};
for (const v of obj) console.log(v); // 1 2 3
来源整理自:vue3js.cn 面试官系列



