javascript中的迭代器

javascript中的迭代器


前言

面试中被问到:
ES6中更新的迭代器有什么用?


提示:文章仅供参考

一、Iterator是什么?

示例:先来看一个最简单的迭代:

for(let i = 0;i<10;i++){
	console.log(i)
}

其实迭代器就是帮助数据结构更好的进行遍历的工具。
常见的,当我们遍历一个数据结构时,我们会使用到for循环进行迭代,那为什么js中还需要引入迭代器的概念呢?
1、对js中的Array、Map、Set数据结构更便利地取得数据
2、为for-of 提供支持

二、如何使用

1.那些类型内置了可迭代接口?

1、String
2、Array
3、MaP
4、Set
5、arguments、NodeList等类数组对象

Iterator如何进行迭代?
iterator内置了next方法,next方法返回value和done,value为当前值,done是布尔值,为true时表示没有数据了
所以以上的数据类型我们都可以用for -of进行遍历。

2.使用Symbol.iterator为对象实现可迭代

Symbol是ES6加入的符号类型,Symbol.iterator可以作为对象的一个属性,表示实现了该对象迭代器的方法。
注:对象属性为特殊变量是应填上中括号
class Iterator {
  constructor(stop){
    this.value = 1;
    this.stop = stop;
    }
 [Symbol.iterator]() { return this; }

  next() {
    let value = this.value;
    if (value < this.stop) {
      this.value++;
      return {done: false, value: value};
    }
    return {done: true, value: undefined};
  }
}

let myIterator = new Iterator(5)

for (let value of myIterator) {
  console.log(value);
}

其实要实现对象可迭代,还不如使用Map映射集合类型,它还会维护键值对顺序。如果不了解Map类型的小伙伴,可以在评论区留言,看到之后我会再简单介绍一下。


总结

提示:其实我们还可以使用生成器隐式的为对象返回成员。在下一篇文章会介绍javascript中的生成器。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值