Javascript 如何使用生成器函数实现循环数组
今天我想知道在TypeScript中提供循环数组的最快方法是什么,如:Javascript 如何使用生成器函数实现循环数组,javascript,typescript,generator,yield,Javascript,Typescript,Generator,Yield,今天我想知道在TypeScript中提供循环数组的最快方法是什么,如: ['one', 'two', 'three'] 其中three之后的下一个值将是one,我认为这是一个很好的生成器函数候选值。然而,它似乎对我不起作用。以下代码有什么问题 function* stepGen(){ const steps = ['one', 'two', 'three']; let index = 0; if(index < steps.length - 1){ index++
['one', 'two', 'three']
其中three
之后的下一个值将是one
,我认为这是一个很好的生成器函数候选值。然而,它似乎对我不起作用。以下代码有什么问题
function* stepGen(){
const steps = ['one', 'two', 'three'];
let index = 0;
if(index < steps.length - 1){
index++;
} else {
index = 0;
}
yield steps[index];
}
let gen = stepGen();
console.log(gen.next().value);
console.log(gen.next().value);
console.log(gen.next().value); // should be 'three'
console.log(gen.next().value); // should be 'one'
console.log(gen.next().value);
函数*stepGen(){
常量步长=['1'、'2'、'3'];
设指数=0;
如果(索引<步长长度-1){
索引++;
}否则{
指数=0;
}
屈服台阶[指数];
}
设gen=stepGen();
console.log(gen.next().value);
console.log(gen.next().value);
console.log(gen.next().value);//应该是“三”
console.log(gen.next().value);//应该是“一”
console.log(gen.next().value);
在生成器代码中需要一个循环,否则只有一个yield
发生:
函数*stepGen(步骤){
设指数=0;
while(true){
屈服台阶[指数];
索引=(索引+1)%steps.length;
}
}
设gen=stepGen(['one','two','three']);//传递数组以使其更易于重用
console.log(gen.next().value);
console.log(gen.next().value);
console.log(gen.next().value);
console.log(gen.next().value);
console.log(gen.next().value)代码>生成器代码中需要有一个循环。此外,如果将数组作为参数,则它是可立即用于OP@Bal谢谢,我采纳了这个改进的想法。没错,@BalázsÉdes是对的——我也在发现新事物的力量,比如地图、布景或发电机。我不太确定我是否需要一个发电机,但有了这个语法,这只是一个梦想。但是,我想知道为什么JSFIDLE.net在尝试在JavaScript 1.7或TypeScript下运行此代码时会抛出错误。不得不求助于fiddle中的常规JavaScript选项。似乎可以使用,但JSFIDLE中的TypeScript版本不支持yield
。我想它不是1.6版。