如何在for循环中使用switch语句?

ukr*_*kri 5 javascript

for(var i=0; i<20; i++) {
  if(i%3===0) {
   console.log(i, 'Foo')
  } else {
   console.log(i, 'Default')
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想知道如何在循环内使用 switch 语句编写代码:

for(var i=0; i<20; i++) {
  switch(i) {
   case (i%3===0):
    console.log(i,'Foo')
    break
   default:
    console.log(i,'Default')
    break
  }
}
Run Code Online (Sandbox Code Playgroud)

但它总是导致“默认”。我曾尝试使用标签、匿名函数等,但无法像 if 条件那样输出。我的 switch 语句有问题吗?

编辑:

事实上,我试图这样做:

case (i%3===0):
   console.log(i,'Foo')
   break
case (i%5===0):
   console.log(i,'Bar')
   break
Run Code Online (Sandbox Code Playgroud)

hev*_*ev1 5

您正在尝试使用switch像一系列ifandelse if语句这样的语句。switch 语句不能那样工作。将评估与 switch 语句中的变量值匹配的第一种情况。您可以使用switch(true)so 将评估第一个为真的情况。

for(var i=0; i<20; i++) {
  switch(true) {
   case (i%3===0)://if
    console.log(i,'Foo')
    break
   case (i%5===0)://else if
     console.log(i,'Bar')
     break
   default://else
    console.log(i,'Default')
    break
  }
}
Run Code Online (Sandbox Code Playgroud)

否则,您需要切换i模的值3(如果它等于零,则它可以被 整除3)。

for(var i=0; i<20; i++) {
  switch(i%3) {
   case (0):
    console.log(i,'Foo')
    break
   default:
    console.log(i,'Default')
    break
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,switch在这种情况下通常不应使用语句。您应该使用一系列if(和else if语句)。

for(var i=0; i<20; i++) {
  if(i%3==0){
    console.log(i, 'Foo');
  } else if(i%5==0){
    console.log(i, 'Bar');
  } else {
    console.log(i, 'Default');
  }
}
Run Code Online (Sandbox Code Playgroud)