Prueba para múltiples casos en un interruptor, como un OR (||)
¿Cómo se utiliza un switch
case
cuando usted necesita probar para a o b en el mismo caso?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
6 answers
Puedes usar fall-through:
switch (pageid)
{
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-04 17:08:48
Dado que las otras respuestas explicaban cómo hacerlo sin explicar realmente por qué funciona: {[18]]}
Cuando la switch
se ejecuta, encuentra la primera sentencia case
coincidente y luego ejecuta cada línea de código después del interruptor hasta que golpea una sentencia break
o el final de la sentencia switch
(o una sentencia return
para dejar toda la función contenedora). Cuando omites deliberadamente el break
para que el código debajo del siguiente case
se ejecute también, se llama un fall-through. Así que para requisito del OP:
switch (pageid) {
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Olvidar incluir instrucciones break
es un error de codificación bastante común y es lo primero que debe buscar si su switch
no funciona de la manera que esperaba. Por esa razón a algunas personas les gusta poner un comentario para decir "fall through" para dejar en claro cuando se han omitido declaraciones de ruptura 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 fall-through:
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 caso default
, que se ejecutará si ninguno de los otros casos coincide - si no incluye un default
y ningún caso coincide, entonces no pasa nada. Usted puede (opcionalmente) caer a través del caso predeterminado.
Así que en mi segundo ejemplo si someVar
es 1 llamaría someFunction()
y luego verías cuatro alertas a medida que cae a través de múltiples casos, algunos de los cuales tienen alertas debajo de ellos. Es someVar
es 3, 4 o 5 verías dos alertas. Si someVar
es 7 verías "Algo más" y si es 8 o cualquier otro valor verías "El fin".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-29 00:32:50
Necesitas hacer dos etiquetas case
.
El control pasará de la primera etiqueta a la segunda, por lo que ambos ejecutarán el mismo código.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-28 21:59:06
¡Tienes que cambiarlo!
switch (true) {
case ( (pageid === "listing-page") || (pageid === ("home-page") ):
alert("hello");
break;
case (pageid === "details-page"):
alert("goodbye");
break;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-15 16:44:21
Olvídate de switch
y break
, vamos a jugar con if
. Y en lugar de afirmar
if(pageid === "listing-page" || pageid === "home-page")
Permite crear varios arrays con casos y comprobarlo con Array.prototipo.incluye()
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");
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-06 22:07:32
Use comas para separar mayúsculas y minúsculas
switch (pageid)
{
case "listing-page","home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-27 15:31:17