zoukankan      html  css  js  c++  java
  • Iterator接口

    1.Iterator的作用:对不同的数据进行遍历
    2.Symbol.iterator的部署
    3.for of能遍历的数据:数组,字符串,argument,set,map

    let arr = ['tom','mickey','minnie'];
    for(let value of arr){
        console.log(value)
    }
    
    
    let mSet = new Set(arr);
    for(let value of mSet){
        console.log(value);
    }
    console.log(arr,mSet)
    
    
    let obj = {
        name:'mickey',
        age:10,
        psw:'123'
    }
    for(let filed of obj){
        console.log(filed);//报错,没有iterator接口
    }
    console.log(obj)
    
    
    let arr = ['tom','mickey','minnie'];
    
    调用容器的symbol.iterator方法,并调用,获取容器的迭代器对象
    会产生一个指针,指向容器的第一个值
    let ite = arr[Symbol.iterator]()
    每次调用迭代器的next()方法时,都会返回容器中的下一个值是否遍历结束:done:false 结束了:done:true
    console.log(ite.next())
    console.log(ite.next())
    console.log(ite.next())
    console.log(ite.next())
    
    
    //obj自定义添加iterator方法
    function myIterator(arr){
        let arrIndex = 0;
        return{
            next(){
    
                if( arrIndex < arr.length ){
                    return{
                        value:arr[arrIndex++],
                        done:false
                    }
                }else{
                    return{
                        value:undefined,
                        done:true
                    }
                }
    
            }
        }
    }
    
    let mIte = myIterator(arr);
    console.log(mIte.next());
    console.log(mIte.next());
    console.log(mIte.next());
    console.log(mIte.next());

     

     

     

  • 相关阅读:
    程序员面试金典-整数对查找
    hihocoder-1552-缺失的拼图
    论文: YOLO9000-Better,Faster,Stronger
    hihocoder-1524-逆序对
    hihocoder-1546-集合计数
    hihocoder-1543-SCI表示法
    Oracle中的定时任务JOB
    JS中时间戳处理
    Boostrap小技巧
    Struts标签 logic:iterate简单使用
  • 原文地址:https://www.cnblogs.com/lisa2544/p/15654632.html
Copyright © 2011-2022 走看看