iterator迭代器

iterator 迭代器

// 自制迭代器
function makeIterator(arr) {
    let index = 0
    return {
        next(){
            index++;
            if(index-1<arr.length){
                return {
                    value:arr[index-1],
                    done:false,
                };
            }else{
                return {
                    value:undefined,
                    done:true,
                };
            }
        }
    };
}
let myIter = makeIterator(["a","b"]);
console.log(myIter.next());     // {value: "a", done: false}
console.log(myIter.next());     // {value: "b", done: false}
console.log(myIter.next());     // {value: undefined, done: true}
console.log(myIter.next());     // {value: undefined, done: true}

// 数组上的 迭代器
let arr = ["yi","er"];
let arrIterator = arr[Symbol.iterator]();
console.log(arrIterator.next());    // {value: "yi", done: false}
console.log(arrIterator.next());    // {value: "er", done: false}
console.log(arrIterator.next());    // {value: undefined, done: true}

// Set 上的 迭代器
let s = new Set(["s1","s2"]);
let sIter = s[Symbol.iterator]();
console.log(sIter.next());  // {value: "s1", done: false}
console.log(sIter.next());  // {value: "s2", done: false}
console.log(sIter.next());  // {value: undefined, done: true}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。