📜  如何将 JavaScript 迭代器转换为数组?(1)

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

如何将 JavaScript 迭代器转换为数组?

在 JavaScript 中,迭代器是一种迭代数据结构的通用方式。迭代器使用 next() 方法来访问每个数据项并返回它们的值。但是,有时候我们需要将迭代器转换为数组以便对其进行操作。本文将介绍如何将 JavaScript 迭代器转换为数组。

1. 使用扩展运算符

使用扩展运算符是将迭代器转换为数组的最简单方法。扩展运算符可以将可迭代对象展开为单独的元素,并创建一个新的数组。下面是一个例子:

const myIterator = {
  arr: [1, 2, 3],
  next() {
    if (this.arr.length == 0) {
      return { done: true };
    } else {
      return { value: this.arr.shift(), done: false };
    }
  }
};

const myArray = [...myIterator];
console.log(myArray); // output: [1, 2, 3]
2. 使用 Array.from() 方法

使用 Array.from() 方法也可以将迭代器转换为数组。Array.from() 方法从一个类数组或可迭代对象中创建一个新的数组实例。下面是一个例子:

const myIterator = {
  arr: [1, 2, 3],
  next() {
    if (this.arr.length == 0) {
      return { done: true };
    } else {
      return { value: this.arr.shift(), done: false };
    }
  }
};

const myArray = Array.from(myIterator);
console.log(myArray); // output: [1, 2, 3]
3. 手动转换

除了上述两种方法之外,我们还可以手动将迭代器转换为数组。我们可以创建一个空数组,并使用 for...of 循环迭代器来手动将其添加到数组中。下面是一个例子:

const myIterator = {
  arr: [1, 2, 3],
  next() {
    if (this.arr.length == 0) {
      return { done: true };
    } else {
      return { value: this.arr.shift(), done: false };
    }
  }
};

const myArray = [];
for (const value of myIterator) {
  myArray.push(value);
}

console.log(myArray); // output: [1, 2, 3]
总结

以上是将 JavaScript 迭代器转换为数组的三种方法。使用扩展运算符是最简单的方法,但是需要 ES6 的支持。使用 Array.from() 方法也是一个不错的选择,适用于所有主流浏览器。如果以上两种方法不符合需求,我们可以手动将迭代器转换为数组。