Iterator.prototype.toArray()

基准线 2025
新推出

自 ⁨2025 年 3 月⁩ 起,此功能可在最新的设备和浏览器版本上使用。此功能可能在旧设备或浏览器上无法正常工作。

toArray() 方法属于 Iterator 实例,它会创建一个新的 Array 实例,该实例包含迭代器产生的元素。

语法

js
toArray()

参数

无。

返回值

一个包含迭代器元素的新 Array 实例,元素的顺序与它们产生时的顺序相同。

示例

使用 toArray()

iterator.toArray() 等价于 Array.from(iterator)[...iterator],但当涉及多个迭代器辅助方法时,它更便于链式调用。以下示例创建了一个生成斐波那契数列的迭代器,取前 10 个数,过滤掉奇数,然后将结果转换为一个数组。

js
function* fibonacci() {
  let current = 1;
  let next = 1;
  while (true) {
    yield current;
    [current, next] = [next, current + next];
  }
}

const array = fibonacci()
  .take(10)
  .filter((x) => x % 2 === 0)
  .toArray();

console.log(array); // [2, 8, 34]

请注意,最好将 toArray() 作为处理过程的最后一步调用。例如,fibonacci().take(10).toArray().filter(...) 的效率较低,因为迭代器辅助方法是惰性的,可以避免创建临时数组。

规范

规范
ECMAScript® 2026 语言规范
# sec-iterator.prototype.toarray

浏览器兼容性

另见