ES6中的迭代器(Iterator)

迭代器是一种机制,也是一种接口,只要实现了这种接口就可以通过for..of来遍历,任何数据结构部署有Iterator接口都可以完成遍历操作

1.Iterator的三个作用:

1.为各种数据结构提供统一简便的访问接口

2.让数据结构的成员以某种次序排列

3.Iterator接口主要供for...of消费

2.Iterator的遍历过程

1.创建一个指针对象,指向数据结构起始位置,遍历器对象本质上是一个指针对象

2.第一次调用指针对象next方法,可以将指针指向数据结构的第一个成员

3.第二次调用则指向第二个,不断调用next方法则到指向数据结构结束位置

3.通过一个案例描述迭代器

let arr = [1, 2, 3, 4, 5]
console.log(arr.keys());
console.log(arr.values());
console.log(arr.entries());
// 当前对象就是迭代器对象
let str = 'hello'
for (let key of str) {
    console.log(key);
}
// 遍历迭代器对象
let keys = arr.keys()
for (let key of keys) {
    console.log(key);
}
let values = arr.values()
for (let value of keys) {
    console.log(value, '--');
}
let entries = arr.values()
for (let entry of keys) {
    console.log(entry);
}

for-of实现原理就是调用迭代器的next()方法,第一次调用将指针指向数据结构的第一个成员,依次调用依次指向,直到没有成员可以指向,done为true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值