个人技术分享

迭代器是一种特殊的对象。迭代器自带一个next()方法,我们取迭代器中的数据要用next方法。该方法返回一个对象{value:'迭代器元素',done:false},

如果done是false,表示迭代器还有元素,需要继续调用next迭代,如果done是true,则说明没有元素了。

取迭代器的内容用for of遍历

es5创建迭代器

function createIterator(arr){
    let i =0;
    return {
        next:function(){
           let done = i >= arr.length
           let value = done?undefined:arr[i++]
           return {
            value,done
           } 
        }
    }
}
let iterator1 = createIterator([1,2,3,4,'a','b'])
let values = iterator1.next()
console.log(values) // { value: 1, done: false }
// 获取所有值
while(!values.done){
    values = iterator1.next()
    console.log(values)
}

es6创建迭代器

es6 Generator生成器可以返回一个迭代器函数 生成器就是函数前面加一个 * yield关键字创建迭代器的参数

{
    function *createIterator(arr){
        for(var i =0;i<arr.length;i++){
            yield arr