📜  JavaScript |迭代器(1)

📅  最后修改于: 2023-12-03 15:31:40.033000             🧑  作者: Mango

JavaScript | 迭代器

在 JavaScript 中,迭代器是用来遍历数据集合中的每个元素的工具。 它们是一种将数据结构和与之交互的算法分离的方法。

简介

JavaScript 的迭代器是一组引用,用来访问集合的每个元素。它们提供了一种标准的方式来遍历不同类型的数据集合,如数组、集合、哈希表等。迭代器通常使用 for 循环进行迭代,但是在 JavaScript 中,我们可以使用迭代器对象来代替它。

迭代器方法

迭代器对象有两种方法:next()方法和return()方法。next() 方法用于获取下一个元素,而 return() 方法用于结束迭代过程。

next()

next() 方法用于获取下一个元素。在调用 next() 方法后,迭代器对象会返回一个对象,该对象具有两个属性: value 和 done。value 属性是迭代器返回的值,而 done 属性表示迭代器是否已经完成。

let arr = [1, 2, 3];

let it = arr.values();

console.log(it.next().value); // 1
console.log(it.next().value); // 2
console.log(it.next().value); // 3
console.log(it.next().done); // true
return()

return() 方法用于结束迭代过程。在调用 return() 方法后,迭代器对象会返回一个对象,该对象具有两个属性: value 和 done。value 属性是迭代器返回的值,而 done 属性表示迭代器是否已经完成。

let arr = [1, 2, 3];

let it = arr.values();

console.log(it.next().value); // 1
console.log(it.return().value); // undefined
console.log(it.next().done); // true
迭代器生成器

迭代器生成器是一种函数,它可以产生一个新的迭代器对象。它通常使用 yield 语句来返回每个元素。

function* generate() {
  yield 1;
  yield 2;
  yield 3;
}

let it = generate();

console.log(it.next().value); // 1
console.log(it.next().value); // 2
console.log(it.next().value); // 3
console.log(it.next().done); // true
迭代器和 for...of 循环

在 ES6 中,我们可以使用 for...of 循环来遍历任何可迭代对象,包括数组、集合、Map、字符串等。它会自动迭代对象并返回其值。可以看作是迭代器对象的语法糖。

let arr = [1, 2, 3];

for (let i of arr) {
  console.log(i);
}
// 输出 1 2 3
结束语

迭代器是一个非常有用的工具,它可以用来遍历不同类型的数据集合。在 for 循环不适用的情况下,迭代器可以帮助我们简化代码。虽然在 JavaScript 中迭代器并不常用,但它是一个非常有趣的工具,值得学习和使用。