我想就如何减少这种转换提出一些建议:
switch (lotUser | winningLot) {
case lotUser === winningLot[0]:
case lotUser === winningLot[1]:
case lotUser === winningLot[2]:
case lotUser === winningLot[3]:
case lotUser === winningLot[4]:
case lotUser === winningLot[5]:
case lotUser === winningLot[6]:
case lotUser === winningLot[7]:
console.log("You win!");
break;
default:
console.log("You do not win!");
break;
}
而不是
case lotUser === winningLot[0]:
我写的脚本是:
switch (lotUser | winnendLot) {
case lotUser === winnendLot[0|1|2|3|4|5|6|7]:
console.log("You win!");
break;
default:
console.log("You do not win!");
break;
}
我只是不知道这是否按照我希望的方式工作。它需要检查生成的lotUser是否等于数组中的一个值(winningLot)。如果lotUser等于winnerLot数组中的一个或多个值,则应输出“You win!”。 有人可以确认我的代码是否符合我的描述?
答案 0 :(得分:5)
if (winnedLot.indexOf(lotUser) !== -1) {
console.log("Won!");
}
else {
console.log("Lost!");
}
它在数组中搜索lotUser
中存储的第一个值,并返回其各自的索引。
由于您不需要计算出现次数,因此这应该是最好的方法。
如果要计算它们,请使用循环:
var count = 0;
for (var i=0, len=winnedLot.length; i<len; i++) {
if (winnedLot[i] === lotUser) {
count++;
}
}
答案 1 :(得分:2)
您只需使用indexOf
:
if(winningLot.indexOf(lotUser) >= 0) {
...
} else {
...
}
答案 2 :(得分:1)
对于初学者来说,你错误地使用了switch
。要比较的值位于switch(...)
部分,每个case ...:
无论如何,除此之外,你想要的只是检查lotUser
数组中是否winnendLot
。易:
// assuming supporting browser:
if( winnendLot.indexOf(lotUser) > -1) console.log("You win!");
// full browser support:
var winner = false, l = winnendLot.length, i;
for( i=0; i<l; i++) {
if( winnendLot[i] === lotUser) {
winner = true;
break;
}
}
if( winner) console.log("You won!");