Pruebe varios casos en un conmutador, como un OR (||)
¿Cómo usarías a switch
case
cuando necesitas probar a o b en el mismo caso?
switch (pageid) {
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Puedes utilizar el método fallido:
switch (pageid)
{
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Dado que las otras respuestas explicaron cómo hacerlo sin explicar por qué funciona:
Cuando se switch
ejecuta, encuentra la primera case
declaración coincidente y luego ejecuta cada línea de código después del cambio hasta que llega a una break
declaración o al final de switch
(o una return
declaración para dejar toda la función que contiene). Cuando se omite deliberadamente el break
código del siguiente case
también se ejecuta, se denomina falla . Entonces, para el requisito del OP:
switch (pageid) {
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Olvidarse de incluir break
declaraciones es un error de codificación bastante común y es lo primero que debe buscar si switch
no funciona como esperaba. Por esa razón, a algunas personas les gusta poner un comentario que diga "fallar" para dejar claro cuando las declaraciones de ruptura se han omitido a propósito. Lo hago en el siguiente ejemplo ya que es un poco más complicado y muestra cómo algunos casos pueden incluir código para ejecutar antes de que fallen:
switch (someVar) {
case 1:
someFunction();
alert("It was 1");
// fall through
case 2:
alert("The 2 case");
// fall through
case 3:
// fall through
case 4:
// fall through
case 5:
alert("The 5 case");
// fall through
case 6:
alert("The 6 case");
break;
case 7:
alert("Something else");
break;
case 8:
// fall through
default:
alert("The end");
break;
}
También puede (opcionalmente) incluir un default
caso, que se ejecutará si ninguno de los otros casos coincide; si no incluye un caso default
y ningún caso coincide, no sucede nada. Puede (opcionalmente) pasar al caso predeterminado.
Entonces, en mi segundo ejemplo, si someVar
es 1, llamaría someFunction()
y luego vería cuatro alertas a medida que pasa por varios casos, algunos de los cuales tienen alertas debajo. Si someVar
son 3, 4 o 5, verás dos alertas. Si someVar
es 7 verás "Algo más" y si es 8 o cualquier otro valor verás "El final".
¡Tienes que cambiarlo!
switch (true) {
case ( (pageid === "listing-page") || (pageid === ("home-page") ):
alert("hello");
break;
case (pageid === "details-page"):
alert("goodbye");
break;
}
Olvídate switch
y break
juguemos con if
. Y en lugar de afirmar
if(pageid === "listing-page" || pageid === "home-page")
creemos varias matrices con casos y verifíquelas con Array.prototype.includes()
var caseA = ["listing-page", "home-page"];
var caseB = ["details-page", "case04", "case05"];
if(caseA.includes(pageid)) {
alert("hello");
}
else if (caseB.includes(pageid)) {
alert("goodbye");
}
else {
alert("there is no else case");
}