📅  最后修改于: 2023-12-03 14:41:01.032000             🧑  作者: Mango
ES6 引入了一种称为迭代器的新对象,该对象提供了一种更好的方式来遍历数据结构。在本文中,我们将讨论什么是迭代器,以及如何使用它们来遍历不同类型的数据结构。
迭代器是一个具有 next()
方法的对象。该方法返回一个包含两个属性的对象:done
和 value
。如果迭代器已经完成了遍历操作,则 done
属性为 true
;否则,done
属性为 false
。value
属性包含下一个值。
我们可以使用 for...of
循环来遍历一个实现了迭代器方法的数据结构:
let arr = [1, 2, 3];
for (let value of arr) {
console.log(value);
}
以上代码将输出:
1
2
3
我们也可以手动使用迭代器来遍历一个数据结构:
let arr = [1, 2, 3];
let iterator = arr[Symbol.iterator]();
let result = iterator.next();
while (!result.done) {
console.log(result.value);
result = iterator.next();
}
以上代码也将输出:
1
2
3
JavaScript 中的许多数据结构都实现了迭代器方法:
Array
):使用 values()
方法返回一个迭代器。String
):可以直接使用 for...of
循环遍历。Map
和 Set
:使用 entries()
方法返回一个迭代器。Arguments
对象:使用 values()
方法返回一个迭代器。NodeList
对象:使用 values()
方法返回一个迭代器。我们可以自定义一个迭代器方法来遍历我们自己的数据结构。以下是一个自定义迭代器的示例:
let myIterable = {
data: [1, 2, 3],
[Symbol.iterator]() {
let index = 0;
return {
next: () => {
if (index < this.data.length) {
return { value: this.data[index++], done: false };
} else {
return { done: true };
}
}
}
}
}
for (let value of myIterable) {
console.log(value);
}
以上代码将输出:
1
2
3
迭代器是一种用于遍历数据结构的对象。它们提供了一种更好的方法来遍历 JavaScript 中的数据对象。我们可以使用 for...of
循环或手动使用迭代器方法来遍历它们。许多内建数据结构都实现了迭代器方法。我们也可以自定义迭代器来遍历我们自己的数据结构。