2

es6的Iterator(迭代器)

迭代器允许每次访问数据集合的一个元素,当指针指向数据集合最后一个元素是,迭代器便会退出。它提供了 next() 函数来遍历一个序列,这个方法返回一个包含 done 和 value 属性的对象。
var arr = [1,2,3,4,5,6];
    for(var i = 0;i<arr.length;i++){
        console.log(arr[i]);
    }
    //迭代器    提升  访问具有接口数据的效率
    //迭代器  他用来访问具有遍历接口数据的,它有一个next(理解指针-1)方法
    //next 将当前指针移到下一个位置,返回一个对象{value:,done:}
    //使用迭代器
    //可遍历接口
    var iter = arr[Symbol.iterator]();
    console.log(iter.next());
    console.log(iter.next());
    console.log(iter.next());
    console.log(iter.next());
    console.log(iter.next());
    console.log(iter.next());
    console.log(iter.next());

    //哪些数据有    遍历接口  

    //数组   Map    Set   类数组
    var obj = {};
    console.log(obj);//没有接口

    var s = new Set([1,2,3]);
    console.log(s);//有接口
    let itera = s[Symbol.iterator]();
    console.log(itera.next());

    var m = new Map([["age,23"],["sex","女"]]);
    m.set("name","姜姜");
    console.log(m);
    
    var i = m[Symbol.iterator]();
    console.log(i.next());
    console.log(i.next());
    console.log(i.next()); 

    let tags =document.getElementsByName("div");
    console.log(tags);

自定义的迭代器

var arr = [1,2,3,4,5,6];

function Iterator(arr){
    let i = -1;
    function next(){
        i++;
        let value;
        let done = false;
        if(i == arr.length) {
            value = undefined;
            done = true;
        }else{
            value = arr[i];
        }
        return {valye:arr[i],done:done};
    }
    return {next:next};
}

let iter =Iterator(arr);
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());


姜筱妍
269 声望10 粉丝

君生我未生,我生君已老。