迭代是什么

迭代是指遍历一个集合(如数组、对象、集合等)的所有元素,通常是按照某种顺序访问。迭代器(Iterator)就是提供这种遍历功能的对象。

迭代器

  1. 迭代器(Iterator)是一种 ​ 对象​​,它提供了一种标准的方式来 ​ 按顺序访问集合中的元素 ​​。迭代器的核心是它实现了 next()方法,每次调用 next()会返回当前元素并移动指针到下一个位置。
  2. 迭代器协议规定:要成为一种迭代器,必须满足迭代器对象有一个 next 方法,next 方法返回一个对象,这个对象包含两个属性,value:当前迭代的值(可以是任意类型)和 done:布尔值,表示迭代是否完成。

其实还有 return()方法和 throw() 用来提前结束或者抛出错误

可迭代对象

实现了【Symbol.iterator】 方法的对象 ​,这个方法返回一个迭代器对象。可迭代对象可以用 for...of 遍历,或通过 ... 展开

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 让一个普通对象变为可迭代对象
const myIterableObject = {
data: ["A", "B", "C"],
[Symbol.iterator]() {
// 实现 Symbol.iterator 方法
let index = 0;
return {
next: () => {
return index < this.data.length
? { value: this.data[index++], done: false }
: { done: true };
},
};
},
};

// 使用 for...of 遍历
for (const item of myIterableObject) {
console.log(item); // A, B, C
}