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())
//结果也和上面的一样

猜你喜欢

转载自blog.csdn.net/dtbk123/article/details/89465820