如何将 JavaScript 迭代器转换为数组
在 JavaScript 中,迭代器是一组元素,我们可以通过迭代并访问每个元素来遍历。在 JavaScript 中,集合、映射或对象是迭代器,我们无法像数组那样使用索引访问迭代器的元素。
因此,我们首先需要将迭代器转换为数组。在这里,我们将使用不同的方法,例如 array.from() 等将迭代器转换为数组。
使用 for-of 循环
for-of 循环遍历迭代器中每个元素,例如集合和映射。在 for-of 循环中,我们可以访问元素并将其添加到数组中,我们可以使用 push() 方法将元素添加到数组中。
语法
用户可以按照下面的语法使用 for-of 循环将迭代器转换为数组。
for (let element of iterator) {
array.push(element);
}
在上述的语法中,我们使用for-of循环访问迭代器的元素并将其推送到数组中
示例1
在下面的示例中,我们创建了一个名为test_array的数组,并用一些数字初始化它。然后,我们使用Symbol.iterator()将数组转换为迭代器。
接下来,我们使用for-of循环遍历迭代器。我们逐个访问迭代器的所有元素并将它们推送到数组中。一旦for循环的所有迭代完成,我们可以得到完整的迭代器数组。
<html>
<body>
<h2>Using the <i> for loop </i> to transform JavaScript iterator into the array</h2>
<div id = "output"> </div>
</body>
<script>
let output = document.getElementById('output');
let test_array = [10, 20, 30, 0, 50, 60, 70];
let iterator = test_array[Symbol.iterator]();
let array = [];
for (let element of iterator) {
array.push(element);
output.innerHTML += "Array element is - " + element + "<br>";
}
output.innerHTML += "The whole array is - " + array;
</script>
</html>
使用array.from()方法
array.from()方法可以从迭代器创建数组。我们需要将迭代器对象作为array.from()方法的参数传递进去。它会将迭代器转换为数组后返回。
语法
用户可以按照以下语法使用array.from()方法将迭代器转换为数组。
let array = Array.from(test_set);
在上面的语法中,test_set是一个迭代器,用于转换为数组。
参数
test_set - 它是一个要转换为数组的迭代器。
示例2
在下面的示例中,我们使用了各种元素创建了一个集合。然后,我们使用array.from()方法将集合转换为数组。在输出中,用户可以看到从array.from()方法返回的数组。
<html>
<body>
<h2>Using the <i> Array.from() method </i> to transform JavaScript iterator into the array.</h2>
<div id = "output"> </div>
</body>
<script>
let output = document.getElementById('output');
let test_set = new Set(["Hello", "Hello", "Hi", 10, 10, 20, 30, 40, 40, true, false, true, true]);
let array = Array.from(test_set);
output.innerHTML += "The array from the test_set is " + array;
</script>
</html>
使用展开运算符
展开运算符还可以将迭代器转换为类似于array.from()方法的数组。它将迭代器的所有元素复制到新数组中。我们还可以使用它来克隆数组。
语法
用户可以按照以下语法使用展开运算符将迭代器转换为数组。
let array = [...test_map];
在上面的语法中,test_map是一个迭代器。
示例3
在下面的示例中,我们创建了带有唯一键和值的地图。我们可以使用键从地图中访问特定值。
我们使用传播运算符将test_map转换为数组。在输出中,用户可以看到地图的每个键和值都被添加到数组中。
<html>
<body>
<h2>Using the <i> Spread operator </i> to transform JavaScript iterator into the array.</h2>
<div id = "output"> </div>
</body>
<script>
let output = document.getElementById('output');
var test_map = new Map([["first", true], ["second", false], ["third", false], ["fourth", true]]);
let array = [...test_map];
output.innerHTML += "The array from the test_map is " + array;
</script>
</html>
示例4
在这个示例中,我们将set的迭代器转换为数组。使用new Set()构造函数来从数字、布尔值和字符串元素创建一个set。
然后,我们使用扩展运算符将set的迭代器转换为数组。
<html>
<body>
<h2>Using the <i> Spread operator </i> to transform JavaScript iterator into the array.</h2>
<div id="output"> </div>
</body>
<script>
let output = document.getElementById('output');
let set = new Set([30, 40, "TypeScript", "JavaScript"])
let array = [...set]
output.innerHTML += "The array from the object is " + array;
</script>
</html>
在本教程中,我们看到了三种不同的将迭代器转换为数组的方法。最好的方法是使用扩展运算符,因为它还提供了另一个功能,即克隆数组。