ES6 : 迭代器和生成器

本文介绍了迭代器的概念,强调了迭代与遍历的区别。在JavaScript中,迭代器是一个具有`next()`方法的对象,用于按顺序获取数据。ES6以后,数组和类数组对象成为可迭代对象,具备`Symbol.iterator`方法。`for...of...`循环专门用于遍历可迭代对象,而扩展运算符也只适用于可迭代对象。文中还提供了一个斐波那契数列迭代器的例子。
摘要由CSDN通过智能技术生成

11.1 迭代器 iterator

运用场景:React框架,fetch

1. 什么是迭代?

   从一个数据集合中按照一定的顺序,不断取出数据的过程

2. 迭代和遍历的区别?

   迭代强调依次取出,不能确定取出的数据有多少,也不能保证数据取完

   遍历保证知道了数据的长度,,循环不断地全部取出,针对于数据量过大的时候使用遍历会花费很多事件

3. 迭代器

   对迭代过程的封装,通常表现为对象的数据形式(也有数组的形式),不同的语言中,表现出来的形式是不一样

4. 迭代器满足的条件

    1.有得到下一个数据的能力

    2.判断是否有后续数据的能力

js中的迭代器:

js规定,如果一个对象有next方法,并且返回一个对象,就认为该对象为迭代器

```js

    cosnt obj = {

        next(){

            return {

                value : xxx,// 写一个数据

                done : xxx//判断是否有后续数据的能力 一般为boolean

            }

        }

    }

```

ES6之后数组对象Array就已经有迭代器的方法,可以直接使用

在ES6后,如果对象原型上具有知名符号属性Symbol.iterator方法,则表示该对象可迭代

5.1数组是可迭代对象,具有Symbol.iterator方法

5.2类数组也是可迭代对象

5.3对象不是可迭代对象

54.for...of... 专门遍历可迭代对象,不是可迭代对象不可以使用forof遍历 

注意:扩展运算符(...)的展开功能只能在可迭代对象上使用

举例 :
 

  <script>

        // 斐波那契数列迭代器

        // 1 1 2 3 5 8 13 21 34

        function createFeiboIterator(){

            let prev1 = 1;

            let prev2 = 1;

            let n = 1;//当前第几位

            return {

                next(){

                    let value;

                    if(n <= 2){

                        value = 1

                    }else{

                        value = prev1 + prev2;

                    }

                    const result = {

                        value,

                        done : false

                    }

                    prev1 = prev2;

                    prev2 = result.value;

                    n++;

                    return result;

                }

            }

        }

        const iterator = createFeiboIterator()

    </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值