介绍
遍历器是一种接口,为不同的数据类型提供统一的访问机制,不管什么数据类型只要部署了Iterator接口(才可以使用for of),都可以完成遍历操作。
作用
- 为各种数据结构,提供统一的访问接口
- 使得各种数据结构成员能够按照某种次序排列
- Iterator接口可以用于for-of循环
next()方法
在遍历器对象Iterator中,有一个next方法,该方法会返回一个对象,对象中由两个属性value、done(当前数据是否遍历完)
let arr = [1,2,3]
let iterator = arr.values()
console.log(iterator.next()) //{ value: 1, done: false }
console.log(iterator.next()) //{ value: 2, done: false }
console.log(iterator.next()) //{ value: 3, done: false }
console.log(iterator.next()) //{ value: undefined, done: true }
添加迭代器
获取数组中的values方法
console.log(Array.prototype[Symbol.iterator])
console.log([][Symbol.iterator])
let arr_like = {
"0":"tom",
"1":"25",
"2":"male",
length:3,
[Symbol.iterator]:[][Symbol.iterator]
}
console.log(arr_like);
for(let val of arr_like){
console.log(val);
}
for-of循环
只有拥有迭代器的对象才能使用的循环
拥有迭代器的对象:Array,String,Set,Map,arguments
举例:
let map = new Map([['name','tom'],["age",20]])
for(let res of map) {
console.log(res)
}//["name","tom"] ["age",20]
let set = new Set([1,2,3,4,5])
for(let res of set) {
console.log(res)
} //1 2 3 4 5