在JavaScript中从生成器创建数组
Create Array from Generator in JavaScript
我想在JavaScript中从生成器的值创建一个数组。生成器创建一个动态长度的序列,如下所示
function* sequenceGenerator(minVal, maxVal) {
let currVal = minVal;
while(currVal < maxVal)
yield currVal++;
}
我想将这些值存储在数组中,但是使用next()
直到生成器完成似乎不是最好的方法(并且看起来相当丑陋)。
var it, curr, arr;
it = sequenceGenerator(100, 1000);
curr = it.next();
arr = [];
while(! curr.done){
arr.push(curr.value);
}
我可以直接从生成器中创建一个数组吗?如果不是,我是否可以避免/隐藏循环?也许用map
或者类似的东西?
一个简短的解决方案可能是:
let list = [...sequenceGenerator(min, max)]
MDN文档
我找到了另一种方法
var arr = Array.from( sequenceGenerator(min, max) );
作品。
你可以这样做;
function* sequenceGenerator() {
let currVal = this.minVal;
while(currVal <= this.maxVal) yield currVal++;
}
var obj = {minVal: 10, maxVal:20},
arr;
obj[Symbol.iterator] = sequenceGenerator;
arr = [...obj];
console.log(arr);
虽然你问了一个非常具体的问题,但我想知道你是否在试图解决一个更普遍的问题,即以方便的方式保持生成器结果。如果去的话,你可以试着看看https://github.com/anywhichway/generx。这实际上会让你把生成器当作一个数组来对待,即在它运行后使用数组表示法访问它。
相关文章:
- knex:根据结果创建数组的合适方法是什么
- 在javascript中创建数组,而不是if.else
- 使用来自不同循环Javascript的数据创建数组
- 尝试从计算创建数组时数组长度无效
- 循环选择标记并创建数组或字符串
- 根据 Array Javascript 中的字符串值动态创建数组名称
- 通过动态创建数组名称在单击函数中引用 javascript 数组
- 如何在不完成添加序列的情况下从rxjs创建数组
- 如何在不创建数组的情况下使用NgFor来生成矩阵UI模式
- 使用jquery从TextArea创建数组
- jquery动态创建数组
- 从现有数组创建数组
- 使用对象的副本创建数组(Javascript)
- 基于分隔符/方括号的实例创建数组
- 如何创建数组取决于是否在jQuery中设置了变量
- 使用JavaScript's Reduce从对象数组创建数组
- 在 JavaScript 中动态创建数组
- 在 javascript 中使 split() 方法使用双引号而不是单引号创建数组
- 在 $.each 函数中使用条件来创建数组
- 如何修改此代码,以便创建数组并将事件添加到数组中