Iterator.prototype.toArray()

实验性: 这是一个 实验性技术
在生产环境中使用此功能前,请仔细查看 浏览器兼容性表格

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(...) 的效率较低,因为迭代器辅助方法是惰性的,并且避免创建临时数组。

规范

规范
迭代器助手
# sec-iteratorprototype.toarray

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅