Skip to content

迭代器iterator

迭代有重复的意思。 可迭代的对象

  • 实现了 [Symbol.iterator] 方法
  • 这个方法返回一个迭代器

迭代器

  • 是一个有 next () 方法的普通对象
  • 用来一步步遍历数据
  • 每次调用 next() 得到 { value, done } 可迭代对象通过 [Symbol.iterator] 方法,生成一个迭代器。 迭代器才是真正负责一步步遍历的工具。

总结

  • 可迭代对象:能被遍历的东西(书)
  • [Symbol.iterator]:方法,用来生成迭代器(拿书签)
  • 迭代器:真正执行遍历的工具(书签) 提前终止迭代器是在迭代器内部使用return方法
javascript
      class Counter {
        constructor(limit) {
          this.limit = limit
        }
        [Symbol.iterator]() {
          let count = 1
          let limit = this.limit
          return {
            next() {
              if (count <= limit) {
                return { done: false, value: count++ }
              } else {
                return { done: true }
              }
            },
            return() {
              console.log('提前退出')
              return { done: true }
            }
          }
        }
      }
      let counter = new Counter(3)
      for (let i of counter) {
        if (i === 2) break
        console.log(i)
      } //输出 1  提前退出
      //新的一个迭代器
      for (let i of counter) console.log(i) //输出 1 2 3

基于 Obsidian + VitePress 构建