在JavaScript中使用Generator创建数组

Tim*_*ton 7 javascript arrays generator

我想从 JavaScript 中的生成器的值创建一个数组.生成器创建一个像这样的动态长度序列

function* sequenceGenerator(minVal, maxVal) {
    let currVal = minVal;

    while(currVal < maxVal)
        yield currVal++;
}
Run Code Online (Sandbox Code Playgroud)

我想将这些值存储在一个数组中,但使用next()直到生成器完成似乎不是最好的方法(并且说实话上看起来很丑).

var it, curr, arr;

it = sequenceGenerator(100, 1000);
curr = it.next();
arr = [];

while(! curr.done){
    arr.push(curr.value);
}
Run Code Online (Sandbox Code Playgroud)

我可以以某种方式直接从发生器/内部创建一个数组吗?如果没有,我可以以某种方式避免/隐藏循环吗?也许通过使用map或类似的东西?

提前致谢.

phi*_*ipp 27

一个简短的解决方案可能是

let list = [...sequenceGenerator(min, max)]
Run Code Online (Sandbox Code Playgroud)

有关MDN的文档


Tim*_*ton 13

我发现了另一种方式

var arr = Array.from( sequenceGenerator(min, max) );
Run Code Online (Sandbox Code Playgroud)

也起作用.