negrita - Cambiar la declaración de casos múltiples en JavaScript
title css (16)
Agregando y aclarando la respuesta de Stefano, puede usar expresiones para establecer dinámicamente los valores para las condiciones en el interruptor, por ejemplo:
var i = 3
switch (i) {
case ((i>=0 && i<=5)?i:-1): console.log(''0-5''); break;
case 6: console.log(''6'');
}
Así que en tu problema, podrías hacer algo como:
var varName = "afshin"
switch (varName) {
case (["afshin", "saeed", "larry"].indexOf(varName)+1 && varName):
console.log("hey");
break;
default:
console.log(''Default case'');
}
Aunque no sea tan SECO ..
Necesito varios casos en la instrucción switch en JavaScript, algo como:
switch (varName)
{
case "afshin", "saeed", "larry":
alert(''Hey'');
break;
default:
alert(''Default case'');
break;
}
¿Cómo puedo hacer eso? Si no hay manera de hacer algo así en JavaScript, quiero conocer una solución alternativa que también siga el concepto DRY .
Aquí hay un enfoque diferente evitando la instrucción de switch
completo:
var cases = {
afshin: function() { alert(''hey''); },
_default: function() { alert(''default''); }
};
cases.larry = cases.saeed = cases.afshin;
cases[ varName ] ? cases[ varName ]() : cases._default();
En Js para asignar múltiples casos en el conmutador, tenemos que definir different case without break
como se indica a continuación:
<script type="text/javascript">
function checkHere(varName){
switch (varName)
{
case "saeed":
case "larry":
case "afshin":
alert(''Hey'');
break;
case "ss":
alert(''ss'');
break;
default:
alert(''Default case'');
break;
}
}
</script>
Por favor vea el ejemplo, haga clic en el link
En el nodo parece que se le permite hacer esto:
data = "10";
switch(data){
case "1": case "2": case "3": //put multiple cases on the same line to save vertical space.
console.log("small"); break;
case "10": case "11": case "12":
console.log("large"); break;
default:
console.log("strange");
break;
}
Esto hace que el código sea mucho más compacto en algunos casos.
Esto funciona en JavaScript regular
function theTest(val) {
var answer = "";
switch( val ) {
case 1: case 2: case 3:
answer = "Low";
break;
case 4: case 5: case 6:
answer = "Mid";
break;
case 7: case 8: case 9:
answer = "High";
break;
default:
answer = "Massive or Tiny?";
}
return answer;
}
theTest(9);
Aclamaciones.
Otra forma de hacer varios casos en la instrucción de cambio, cuando está dentro de una función
switch (sensor){
case /Pressure/g.test(sensor):{
console.log(''Its pressure!'');
break;
}
case /Temperature/g.test(sensor):{
console.log(''Its temperature!'');
break;
}
}
Podrías escribirlo así:
switch (varName)
{
case "afshin":
case "saeed":
case "larry":
alert(''Hey'');
break;
default:
alert(''Default case'');
break;
}
Puedo ver que hay muchas respuestas buenas aquí, pero ¿qué sucede si necesitamos verificar más de 10 cases
? Aquí está mi enfoque.
function isAccessible(varName){
let accessDenied = [''Liam'',''Noah'',''William'',''James'',''Logan'',''Benjamin'',
''Mason'',''Elijah'',''Oliver'',''Jacob'',''Daniel'',''Lucas''];
switch (varName) {
case (accessDenied.includes(varName)?varName:null):
return ''Access Denied!'';
default:
return ''Access Allowed.'';
}
}
console.log(isAccessible(''Liam''));
Si estás usando ES6, puedes hacer esto:
if ([''afshin'', ''saeed'', ''larry''].includes(varName)) {
alert(''Hey'');
} else {
alert(''Default case'');
}
O para versiones anteriores de JavaScript, puedes hacer esto:
if ([''afshin'', ''saeed'', ''larry''].indexOf(varName) !== -1) {
alert(''Hey'');
} else {
alert(''Default case'');
}
Tenga en cuenta que esto no funcionará en los navegadores IE más antiguos, pero podría solucionarlo con bastante facilidad. Vea la pregunta para determinar si la cadena está en la lista en javascript para obtener más información.
Utilice la función de caída de la instrucción switch
. Se ejecutará un caso coincidente hasta que se encuentre una break
(o el final de la instrucción de switch
), por lo que podría escribirlo como:
switch (varName)
{
case "afshin":
case "saeed":
case "larry":
alert(''Hey'');
break;
default:
alert(''Default case'');
}
Yo uso así:
function name(varName){
switch (varName) {
case ''afshin'':
case ''saeed'':
case ''larry'':
return ''Hey'';
default:
return ''Default case'';
}
}
console.log(name(''afshin'')); //Hey
puede utilizar el operador '' in '' ...
se basa en la invocación objeto / hash ...
por lo que es tan rápido como javascript puede ser ...
// assuming you have defined functions f(), g(a) and h(a,b)
// somewhere in your code
// you can define them inside the object but...
// the code becomes hard to read, I prefer this way
o = { f1:f, f2:g, f3:h };
// if you use "STATIC" code can do:
o[''f3'']( p1, p2 )
// if your code is someway "DYNAMIC", to prevent false invocations
// m brings the function/method to be invoked (f1, f2, f3)
// and you can rely on arguments[] to solve any parameter problems
if ( m in o ) o[m]()
Disfruta, ZEE
solo cambia la condición del interruptor aprroach
switch (true) {
case (function(){ return true; })():
alert(''true'');
break;
case (function(){ return false; })():
alert(''false'');
break;
default:
alert(''default'');
}
Depende. Switch evalúa una vez y solo una vez. En una coincidencia, todas las declaraciones de casos subsiguientes hasta el ''descanso'' se disparan, sin importar lo que diga el caso.
var onlyMen = true;
var onlyWomen = false;
var onlyAdults = false;
(function(){
switch (true){
case onlyMen:
console.log (''onlymen'');
case onlyWomen:
console.log (''onlyWomen'');
case onlyAdults:
console.log (''onlyAdults'');
break;
default:
console.log(''default'');
}
})(); // returns onlymen onlywomen onlyadults
<script src="https://getfirebug.com/firebug-lite-debug.js"></script>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Example1</title>
<link rel="stylesheet" href="css/style.css" >
<script src="js/jquery-1.11.3.min.js" type="text/javascript"></script>
<script>
function display_case(){
var num = document.getElementById(''number'').value;
switch(num){
case (num = "1"):
document.getElementById("result").innerHTML = "You select day Sunday";
break;
case (num = "2"):
document.getElementById("result").innerHTML = "You select day Monday";
break;
case (num = "3"):
document.getElementById("result").innerHTML = "You select day Tuesday";
break;
case (num = "4"):
document.getElementById("result").innerHTML = "You select day Wednesday";
break;
case (num = "5"):
document.getElementById("result").innerHTML = "You select day Thusday";
break;
case (num = "6"):
document.getElementById("result").innerHTML = "You select day Friday";
break;
case (num = "7"):
document.getElementById("result").innerHTML = "You select day Saturday";
break;
default:
document.getElementById("result").innerHTML = "You select day Invalid Weekday";
break
}
}
</script>
</head>
<body>
<center>
<div id="error"></div>
<center>
<h2> Switch Case Example </h2>
<p>Enter a Number Between 1 to 7</p>
<input type="text" id="number" />
<button onclick="display_case();">Check</button><br />
<div id="result"><b></b></div>
</center>
</center>
</body>
switch (myVariable)
{
case "A":
case "B":
case "C":
// Do something
break;
case "D":
case "E":
// Do something else
break;
default:
// Default case
break;
}
En este ejemplo, si el valor de myVariable es A, B o C, ejecutará el código en el caso "C" :.