Passa all’istruzione più casi in JavaScript

Ho bisogno di più casi nell’istruzione switch in JavaScript, qualcosa del tipo:

switch (varName) { case "afshin", "saeed", "larry": alert('Hey'); break; default: alert('Default case'); break; } 

Come lo posso fare? Se non c’è modo di fare qualcosa di simile in JavaScript, voglio conoscere una soluzione alternativa che segue anche il concetto di DRY .

Usa la funzione fall-through dell’istruzione switch . Un caso corrispondente verrà eseguito fino a quando non viene trovata break (o la fine switch ), quindi è ansible scrivere come:

 switch (varName) { case "afshin": case "saeed": case "larry": alert('Hey'); break; default: alert('Default case'); } 

Funziona con JavaScript normale

 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); 

Saluti.

Ecco un approccio diverso evitando del tutto l’istruzione switch :

 var cases = { afshin: function() { alert('hey'); }, _default: function() { alert('default'); } }; cases.larry = cases.saeed = cases.afshin; cases[ varName ] ? cases[ varName ]() : cases._default(); 

In Js per assegnare più casi nell’interruttore Dobbiamo definire different case without break come indicato di seguito:

   

Si prega di vedere l’esempio, fare clic sul collegamento

Se stai usando ES6, puoi farlo:

 if (['afshin', 'saeed', 'larry'].includes(varName)) { alert('Hey'); } else { alert('Default case'); } 

O per le versioni precedenti di JavaScript, puoi farlo:

 if (['afshin', 'saeed', 'larry'].indexOf(varName) !== -1) { alert('Hey'); } else { alert('Default case'); } 

Nota che questo non funzionerà con i vecchi browser IE, ma potresti sistemare le cose abbastanza facilmente. Vedere la domanda determinare se la stringa è in elenco in javascript per ulteriori informazioni.

puoi usare l’operatore ‘ in ‘ …
si basa sull’object / invocazione hash …
quindi è veloce come javascript può essere …

 // 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]() 

Divertiti, ZEE

Aggiungendo e chiarendo la risposta di Stefano, è ansible utilizzare le espressioni per impostare dynamicmente i valori per le condizioni in switch, ad esempio:

 var i = 3 switch (i) { case ((i>=0 && i< =5)?i:-1): console.log('0-5'); break; case 6: console.log('6'); } 

Quindi, nel tuo problema, potresti fare qualcosa come:

 var varName = "afshin" switch (varName) { case (["afshin", "saeed", "larry"].indexOf(varName)+1 && varName): console.log("hey"); break; default: console.log('Default case'); } 

anche se non è così molto ASCIUTTO ..

Nel nodo sembra che tu sia autorizzato a farlo:

 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; } 

Questo rende molto più compatto il codice in alcuni casi.

Dipende. Switch valuta una sola volta. Dopo una partita, tutte le dichiarazioni dei casi susseguenti fino al “break” sparano, a prescindere dal 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 
  
 switch (myVariable) { case "A": case "B": case "C": // Do something break; case "D": case "E": // Do something else break; default: // Default case break; } 

In questo esempio, se il valore di myVariable è A, B o C, eseguirà il codice nel caso “C” :.

Un altro modo di fare più casi nell’istruzione switch, quando all’interno di una funzione

  function name(varName){ switch (varName) { case 'afshin': case 'saeed': case 'larry': return 'Hey'; default: return 'Default case'; } } console.log(name('afshin')); //Hey 

Io uso in questo modo:

 switch (sensor){ case /Pressure/g.test(sensor):{ console.log('Its pressure!'); break; } case /Temperature/g.test(sensor):{ console.log('Its temperature!'); break; } } 

Potresti scrivere così:

 switch (varName) { case "afshin": case "saeed": case "larry": alert('Hey'); break; default: alert('Default case'); break; } 
   Example1      

Switch Case Example

Enter a Number Between 1 to 7


basta accendere la condizione dell’interruttore aprroach

 switch (true) { case (function(){ return true; })(): alert('true'); break; case (function(){ return false; })(): alert('false'); break; default: alert('default'); }