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.
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)) :
}
Oui, vous pouvez utiliser le commutateur interne de cette façon,
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;`
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;
}
}
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.