ES6迭代器
在 ES6 中,迭代器是一种用于遍历数据集合的机制,它提供了一种统一的方式来访问各种不同类型的数据结构。迭代器是一个对象,实现了 Symbol.iterator 方法,该方法返回一个包含 next() 方法的对象,调用 next() 方法会返回一个包含 value 和 done 两个属性的对象,其中 value 表示当前遍历到的元素,done 表示是否遍历结束。
使用迭代器可以遍历数组、字符串、Set、Map、生成器等数据结构,通过 for...of 循环可以轻松地遍历迭代器返回的元素。以下是一个简单的示例,展示了如何使用迭代器遍历数组:
const numbers = [1, 2, 3, 4, 5];
const iterator = numbers[Symbol.iterator]();
for (const num of iterator) {
console.log(num);
}
在上面的示例中,通过数组对象的 Symbol.iterator 方法获取了一个迭代器对象,然后使用 for...of 循环遍历了该迭代器返回的元素,输出了数组中的每个数字。
除了 for...of 循环外,还可以使用 next() 方法手动遍历迭代器,如下所示:
const numbers = [1, 2, 3, 4, 5];
const iterator = numbers[Symbol.iterator]();
let result = iterator.next();
while (!result.done) {
console.log(result.value);
result = iterator.next();
}
在上面的示例中,使用 while 循环手动遍历了迭代器,输出了数组中的每个数字。
需要注意的是,迭代器一般只能遍历一次,遍历结束后需要重新获取迭代器才能再次遍历。此外,还可以自定义迭代器,实现一个对象的 Symbol.iterator 方法来支持自定义遍历方式,具体可以查看相关文档。