手写实现一个迭代器

845 阅读1分钟

ES6迭代器具有如下特征: 1.迭代器返回一个对象; 2.该对象有一个 next() 方法; 3.调用该方法会返回一个对象; 4.该对象包含两个属性,value 和 done 5. value 表示返回的值,遍历完之后一直返回 undefined; 6. done 表示是否遍历结束。

let myIterator = (arr) => {
  let index = 0
  return {
    next: () => {
      return {
        value: arr[index++] || undefined,
        done: index > arr.length
      }
    }
  }
}

// test
let arr = [1, 4, 'ads']
let iteratorObj = myIterator(arr)
console.log(iteratorObj.next()) // { value: 1, done: false }
console.log(iteratorObj.next()) // { value: 4, done: false }
console.log(iteratorObj.next()) // { value: 'ads', done: false }
console.log(iteratorObj.next()) // { value: undefined, done: true }
console.log(iteratorObj.next()) // { value: undefined, done: true }