迭代器
-
迭代器(Iterator)是一种接口,为各种不同的数据结构提供统一的访问机制,任何数据结构只要部署 Iterator 接口,就可以完成遍历操作。
-
ES6创造了一种新的遍历命令 for...of循环, Iterator接口主要供for...of消费
-
原生具备iterator接口的数据(可用 for...of遍历):
- Array
- Arguments
- Set
- Map
- String
- TypedArray
- nodeList
-
工作原理
- 创建一个指针对象,指向当前数据结构的起始位置
- 第一次调用对象的next方法,指针自动指向数据结构的第一个成员
- 接下来不断调用next方法,指针一直往后移动,直到指向最后一个成员
- 每调用next方法返回一个包含value和done属性的对象
注:需要自定义遍历数据的时候,要想到迭代器
自定义迭代器
const banji = {
name:"终极一班",
stus:['xiaom','xiaon','xiaoh','xiaox'],
[Symbol.iterator](){
let index = 0;
return {
next:()=>{
if (index < this.stus.length) {
const result = {value:this.stus[index],done:false}
index++;
return result;
}else{
return {value:undefined,done:true};
}
}
}
}
}
for (const v of banji) {
console.log(v); //'xiaom','xiaon','xiaoh','xiaox'
}