如何检查一个switch-case语句中的两个变量?



问题是这样的

给你一个有6个面的立方体骰子。每个人的脸上都印着一个号码。数字的范围是1到6,就像普通的骰子一样。你会看到这个立方体的一个面,你的任务是猜出立方体对面面的数字。

交货:输入:N = 6输出:1解释:对于面向6号的骰子会有数字1。

我通过检查所有六个面并返回相应的模具面编号值来使用正常的开关箱,这通过了我的测试用例。然而,我需要简化代码。我可以这样做吗?

oppositeFaceOfDice(N) {
//code here
switch(N){
case 1:return 6;
break;
case 6:return 1;
break;
case 2:return 5;
break;
case 5:return 2;
break;
case 3:return 4;
break;
case 4:return 3;
break;
default: return -1;
}
}
oppositeFaceOfDice(N) {
switch(N){
case 1||6 : return 6?1:6;
break;
case 2||5: return 2?5:2;
break;
case 3||4: return 4?3:4;
break;
}
}

使用对象字量代替switch语句:

function oppositeFaceOfDice(N) {
return {1: 6, 2: 5, 3: 4, 4: 3, 5: 2, 6: 1}[N];
}

或者使用上面@DavidThomas的建议,这个建议特别聪明:

function oppositeFaceOfDice(N) {
if(N < 1 || N > 6) return undefined;
return 7 - N;
}

除了重写代码之外,因为在您的情况下,代码非常清晰且易于调试,您可以删除break语句,因为它是不必要的。

oppositeFaceOfDice(N) {
//code here
switch(N){
case 1:return 6;
case 6:return 1;
case 2:return 5;
case 5:return 2;
case 3:return 4;
case 4:return 3;
}
}

最新更新