1

我想要一些关于如何缩小这个开关的建议:

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 等于winningLot 数组中的一个或多个值,它应该输出“You win!”。有人可以确认我的代码符合我给出的描述吗?

4

3 回答 3

5

Array.prototype.indexOf() 呢

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++;
  }
}
于 2013-10-24T17:21:00.567 回答
2

您可以简单地使用indexOf

if(winningLot.indexOf(lotUser) >= 0) {
    ...
} else {
    ...
}
于 2013-10-24T17:20:48.753 回答
1

对于初学者来说,你使用switch不正确。要比较的值放在switch(...)零件中,每个可能的值都列出case ...:

无论如何,除此之外,您只想检查是否lotUserwinnendLot数组中。简单的:

// 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!");
于 2013-10-24T17:20:51.807 回答