Javascript 有没有办法减少这种代码?
我想在不创建函数的情况下减少代码。那么,有人有解决办法吗 代码如下:Javascript 有没有办法减少这种代码?,javascript,switch-statement,case,reduce,Javascript,Switch Statement,Case,Reduce,我想在不创建函数的情况下减少代码。那么,有人有解决办法吗 代码如下: var level = { level1 : 3, level2 : { win: 3, draw : 2 }, level3 : 3, level4 : 3,
var level = {
level1 : 3,
level2 : {
win: 3,
draw : 2
},
level3 : 3,
level4 : 3,
level5 : 3,
level6 : 3
};
switch(levelIndex) {
case 0:
if (winScore >= level.level1) {
levelIndex++;
this.resetGame();
game.state.start('rockpaperscissor');
} else {
game.state.start('gameover');
}
break;
case 1:
if (winScore >= level.level2.win && drawScore >= level.level2.draw) {
levelIndex++;
this.resetGame();
game.state.start('rockpaperscissor');
}
else {
game.state.start('gameover');
}
break;
case 2:
if (winScore >= level.level3) {
levelIndex++;
this.resetGame();
game.state.start('rockpaperscissor');
}
else {
game.state.start('gameover');
}
break;
case 3:
if (winScore >= level.level4) {
levelIndex++;
this.resetGame();
game.state.start('rockpaperscissor');
}
else {
game.state.start('gameover');
}
break;
}
}
由于要执行的代码对于所有
开关…情况…if
条件都完全相同,因此可以将它们与|
组合成一个if
(逻辑或):
没有测试,但我认为它应该工作
var lvl = 0; // Whatever level you're testing
if (winScore >= level['level'+lvl] || (level['level'+lvl].win <= winScore && level['level'+lvl].draw <= drawScore)) {
levelIndex++;
this.resetGame();
game.state.start('rockpaperscissor');
} else {
game.state.start('gameover');
}
var lvl=0;//不管你在测试什么级别
如果(winScore>=等级['level'+lvl]| |(等级['level'+lvl]),赢
var lvl = 0; // Whatever level you're testing
if (winScore >= level['level'+lvl] || (level['level'+lvl].win <= winScore && level['level'+lvl].draw <= drawScore)) {
levelIndex++;
this.resetGame();
game.state.start('rockpaperscissor');
} else {
game.state.start('gameover');
}