Skip to content

📚 基本概念

🤔 什么是迭代?

迭代是一个优雅的数据处理过程,它按照预定的顺序,从数据集合中逐个获取元素的操作。

⚖️ 迭代 vs 遍历

两者有着本质的区别:

  • 迭代:按需获取数据,更加灵活
    • 🎯 不必遍历完整个集合
    • ⏸️ 可以按需停止
    • 📊 更适合处理大数据集合
  • 遍历:完整处理数据,更加严谨
    • ✅ 必须处理集合中的所有元素
    • 📝 通常按固定顺序进行
    • 💯 适合需要全量处理的场景

🎨 迭代模式

作为一种经典的设计模式,迭代器模式定义了标准的迭代规范:

  • ✨ 提供获取下一个元素的能力
  • 🔍 具备判断是否存在下一个元素的能力

💻 JavaScript 中的迭代器

在 JavaScript 中,迭代器是一个具有特定接口的对象。一个标准的迭代器需要满足以下条件:

  • 🔧 必须实现 next() 方法
  • 📦 next() 方法返回一个包含以下属性的对象:

🔄 可迭代协议

✨ ES6 规定,如果一个对象具有 Symbol.iterator 属性,并且属性值是一个迭代器创建函数,则该对象是可迭代的(iterable)。

示例代码

js
// 可迭代对象
const obj = {
  [Symbol.iterator]() {
    return {
      next() {
        return {
          value: 1,
          done: true
        }
      }
    }
  }
}

const arr = [1, 2, 3]
const iterator = arr[Symbol.iterator]()
iterator.next()

迭代器循环 for-of

js
const iterator = arr[Symbol.iterator]()
let result = iterator.next()
while (!result.done) {
  const item = result.value
  result = iterator.next()
}
// 相当于
for (const item of array) {

}