es6的Iterator(迭代器)

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());
相關文章
相關標籤/搜索