javascript - что - es7




Выключить несколько операторов в JavaScript (11)

В Js для назначения нескольких случаев в switch. Мы должны определить different case without break как показано ниже:

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

См. Пример нажмите на link

Мне нужно несколько случаев в инструкции switch в JavaScript, что-то вроде:

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

   default: 
       alert('Default case');
       break;
}

Как я могу это сделать? Если в JavaScript нет способа сделать что-то подобное, я хочу узнать альтернативное решение, которое также следует концепции DRY .


В узле показано, что вам разрешено делать это:

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

В некоторых случаях это делает гораздо более компактный код.


Вы могли бы написать это так:

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

   default: 
       alert('Default case');
       break;
}         

Добавляя и разъясняя ответ Стефано, вы можете использовать выражения для динамического задания значений условий в коммутаторе, например:

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

Поэтому в вашей проблеме вы можете сделать что-то вроде:

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

    default:
      console.log('Default case');
}

хотя не так много СУХОЙ ..


Если вы используете ES6, вы можете сделать это:

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

Или для более ранних версий JavaScript вы можете сделать это:

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

Обратите внимание, что это не будет работать в более старых браузерах IE, но вы можете легко исправлять их. См. Вопрос, если строка содержится в списке в javascript для получения дополнительной информации.


Используйте провальную функцию оператора switch . Соответствующий случай будет работать до тех пор, пока не будет найден break (или конец оператора switch ), поэтому вы можете написать его так:

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

   default: 
       alert('Default case');
}

Я вижу, что здесь есть много хороших ответов, но что, если это произойдет, когда нам нужно проверить более 10 cases ? вот мой подход.

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

Я использую вот так:

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

просто переключите условие переключателя aprroach

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

Это зависит. Switch оценивается один раз и только один раз. Во время матча все последующие заявления о случаях до «break» срабатывают независимо от того, что говорится в этом случае.

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>


switch (myVariable)
{
  case "A":
  case "B":
  case "C": 
    // Do something
    break;
  case "D":
  case "E":
    // Do something else
    break;
  default: 
    // Default case
    break;
}

В этом примере, если значением myVariable является A, B или C, он выполнит код в случае «C» :.







switch-statement