array within a switch javascript
array within a switch javascript
不久前,我需要帮助进行复杂的切换,但现在我正在用直接变量代替数组。我认为最好使用 for 语句,它不显示结果。
这对我来说是一个副项目,所以如果您看到任何可以改进的方面,请告诉我。
<script>
var strMod=0;
var dexMod=0;
var conMod=0;
var intMod=0;
var wisMod=0;
var chaMod=0;
var strength = prompt("what is your strength?");
var dexterity = prompt("what is your dexterity?");
var constitution = prompt("what is your constitution?");
var intelligence = prompt("what is your intelligence?");
var wisdom = prompt("what is your wisdom?");
var charisma = prompt("what is your charisma?");
var abilities=[strength,dexterity,constitution,intelligence,wisdom,charisma];
var abiMod=[strMod,dexMod,conMod,intMod,wisMod,chaMod];
for (var i=0; i<abilities.length;i++){
switch(true){
case (abilities(i)>=0 && abilities(i)<2 && abilities(i)!==null):
abiMod(i)=-5;
break;
case (abilities(i)>=2 && abilities(i)<4):
abiMod(i)=-4;
break;
case (abilities(i)>=4 && abilities(i)<6):
abiMod(i)=-3;
break;
case (abilities(i)>=6 && abilities(i)<8):
abiMod(i)=-2;
break;
case (abilities(i)>=8 && abilities(i)<10):
abiMod(i)=-1;
break;
case (abilities(i)>=10 && abilities(i)<12):
abiMod(i)=0;
break;
case (abilities(i)>=12 && abilities(i)<14):
abiMod(i)=1;
break;
case (abilities(i)>=14 && abilities(i)<16):
abiMod(i)=2;
break;
case (abilities(i)>=16 && abilities(i)<18):
abiMod(i)=3;
break;
case (abilities(i)>=18 && abilities(i)<20):
abiMod(i)=4;
break;
case (abilities(i)>=20 && abilities(i)<22):
abiMod(i)=5;
break;
default:
abiMod(i)= prompt("what is your"+ abilities(i) +"modifier?");
break;
};
alert(abiMod(i));
};
</script>
与其使用 switch 语句,不如在所有情况下都有一个共同的主题,因此可以使用数学公式代替。
这是修改后的代码
for (var i = 0; i < abilities.length; i++) {
if (abilities[i] !== null && abilities[i] >= 0 && abilities[i] < 22) {
abiMod[i] = Math.floor(abilities[i] / 2) - 5;
}
else {
abiMod[i] = prompt("what is your "+ abilities[i] +" modifier?");
}
};
对于初学者,您需要通过括号而不是参数访问数组索引。
for (var i=0; i<abilities.length;i++){
switch(true){
case (abilities[i]>=0 && abilities[i]<2 && abilities[i]!==null):
abiMod[i]=-5;
break;
case (abilities[i]>=2 && abilities[i]<4):
abiMod[i]=-4;
break;
case (abilities[i]>=4 && abilities[i]<6):
abiMod[i]=-3;
break;
case (abilities[i]>=6 && abilities[i]<8):
abiMod[i]=-2;
break;
case (abilities[i]>=8 && abilities[i]<10):
abiMod[i]=-1;
break;
case (abilities[i]>=10 && abilities[i]<12):
abiMod[i]=0;
break;
case (abilities[i]>=12 && abilities[i]<14):
abiMod[i]=1;
break;
case (abilities[i]>=14 && abilities[i]<16):
abiMod[i]=2;
break;
case (abilities[i]>=16 && abilities[i]<18):
abiMod[i]=3;
break;
case (abilities[i]>=18 && abilities[i]<20):
abiMod[i]=4;
break;
case (abilities[i]>=20 && abilities[i]<22):
abiMod[i]=5;
break;
default:
abiMod[i]= prompt("what is your"+ abilities[i] +"modifier?");
break;
};
alert(abiMod[i]);
};
</script>
相关文章:
- 使用 Javascript switch 语句,如何计算数组中元素的数量(仅数字)
- javascript switch语句/case表达式
- 为什么这个 JavaScript switch 语句(在 for 循环内)保留了上一次迭代的值
- 带有输入文本的 JavaScript switch 语句
- 使用Javascript switch语句在DIV中显示HTML表
- 如何简化一个长 javascript switch case 语句
- JavaScript switch 语句只执行默认的情况
- Javascript Switch 语句中的默认值仅适用于一种情况,但不适用于两种情况
- 我可以在 JavaScript switch 语句中检查不相等吗?
- Javascript - switch 仅适用于字符串
- 我在 JavaScript switch 语句中做错了什么
- HTML5 Javascript SWITCH未在头部或身体中运行
- Javascript Switch 语句未提供正确的结果
- JavaScript switch 语句并将返回应用于函数参数
- Javascript Switch不起作用,我不知道为什么
- 如何在Filed Validation中使用JavaScript Switch案例
- JavaScript:switch语句未设置隐藏元素值
- 为什么我的Javascript SWITCH语句不能用于HEX颜色分配
- Javascript switch
- 嵌套在函数中的 JavaScript switch 语句