Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法减少这种代码?_Javascript_Switch Statement_Case_Reduce - Fatal编程技术网

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');
}