js中的迭代器iterator

js的symbol中有个iterator迭代器,它也是 一个接口,它有三个作用:1.它可以为数据结构提供访问接口 2.可为数据有序排列 3.可用于for of循环和...rest参数,它的工作流程是:1.创建一个指针对象,指向数据结构中的起始位置 2.调用next方法指向下一个数据,直到指向的数据没有时,结束位置。

下面来看下代码

 var arr=[1,4,5]
        var iter=arr[Symbol.iterator]();
        console.log(iter.next())
        console.log(iter.next())
        console.log(iter.next())
        console.log(iter.next())
/*结果为{value:1,done:false}
{value:1,done:false}
{value:1,done:true}
{value:undefined,done:false}
*/

下面来模拟一下迭代器的工作流程

function iter(obj){
           var i=0;
           return {
               next(){
                   let done=i<obj.length?false:true,
                   value=!done?obj[i++]:undefined
                        return{
                            value,
                            done
                        }
                   }
               }
           }
        let it=iter(arr);
        console.log(it.next())
        console.log(it.next())
        console.log(it.next())
        console.log(it.next())
//结果也和上面的一样

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值