web-dev-qa-db-fra.com

Instruction switch imbriquée en javascript

Est-il possible d'utiliser l'instruction switch imbriquée en javascript?.

Mon code est à quoi ressemble 

switch(id1)
{
case 1:
     switch(id2){
     case 1:{
        switch(id3){
        case 1:{}
        case 2:{}
        }
    }
     case 2:{
        switch(id4){
        case 1:{}
        case 2:{}
        }
     }
}
case 2:
}

Si oui, c'est une bonne pratique ou nous pouvons utiliser une autre approche.

14
shanky singh

Votre approche est absolument bonne.

Vous pouvez rendre l’imbrication switch moins complexe en utilisant switch (true):

switch (true) {
case ((id1 === 1) && (id2 === 1) && (id3 === 1)) :
case ((id1 === 1) && (id2 === 1) && (id3 === 2)) :
case ((id1 === 1) && (id2 === 2) && (id3 === 1)) :
case ((id1 === 1) && (id2 === 2) && (id3 === 2)) :
case ((id1 === 2) && (id2 === 1) && (id3 === 1)) :
case ((id1 === 2) && (id2 === 1) && (id3 === 2)) :
case ((id1 === 2) && (id2 === 2) && (id3 === 1)) :
case ((id1 === 2) && (id2 === 2) && (id3 === 2)) :
}
22
Rounin

Oui, vous pouvez utiliser le commutateur interne de cette façon,

Veuillez vérifier cette démo: https://jsfiddle.net/1qsfropn/3/

var text;
var date = new Date()
switch (date.getDay()) {
 case 1:
 case 2:
 case 3:
 default:
    text = "Looking forward to the Weekend";
    break;
 case 4:
 case 5:
    text = "Soon it is Weekend";
    break;
 case 0:
 case 6:
      switch(date.getFullYear()){
      case 2015:
        text = "It is Weekend of last Year.";
      break;
      case 2016:
        text = "It is Weekend of this Year.";
      break;
      case 2017:
        text = "It is Weekend of next Year.";
      break;
      default:
      text = date.getDay();
      break;
    }
break;
}
document.getElementById("demo").innerHTML = text;`
4
Joey Etamity

Vous pouvez utiliser une instruction switch imbriquée, mais elle peut rapidement devenir un code spaghetti et n'est donc pas recommandée. Je préférerais utiliser des fonctions avec l'instruction switch imbriquée pour la clairance du code ou peut-être utiliser une fonction récursive en fonction de ce que le code est censé faire.

Ce n’est qu’un pseudo-code, mais j’espère que cela vous donnera une idée de la façon de le mettre en oeuvre. Vous devez faire attention à ce que la récursivité s'arrête sur une valeur donnée de l'ID. Ce pseudo-code incrémente la valeur de l'ID de 1 si la valeur de l'ID est 1 et de 2 si la valeur est 2. Si la valeur n'est pas 1 ou 2, la récursivité prend fin.

function recursiveSwitch(var id) {
    switch(id) {
       case 1: 
           recursiveSwitch(id + 1);
           break;
       case 2
          recursiveSwitch(id + 2)
          break;
       default:
          return;
     }
}
3
Ómar Óskarsson

En gros, c’est possible, mais je pense que cela dépend de la complexité de l’emboîtement s’il est recommandé d’utiliser instruction de commutateur imbriquée ou d’utiliser des fonctions avec l’instruction de commutateur imbriquée , comme le suggère Ómar Óskarsson.