IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Switch Case multiple en JS


Sujet :

JavaScript

  1. #1
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut Switch Case multiple en JS
    Bonjour à tous,

    Comment puis-je écrire de multiples cas sur une même ligne ou dans un ensemble, du code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    		switch(m) {
    			case in [1,4,7,10,13,16,19,22,25,28] :
    			// code block
    			break;
     
    			case in [2,5,8,11,14,17,20,23,26,29]:
    			// code block
    			break;
     
    			case in [3,6,9,12,15,18,21,24,27,30]:
    			// code block
    			break;
     
    			default:
    			// code block
    		}
    Merci

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    Bonjour,

    Le switch n'est pas le bon choix, un map peut être oui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var m=11;
    arrays=[
       [1,4,7,10,13,16,19,22,25,28],
       [2,5,8,11,14,17,20,23,26,29], 
       [3,6,9,12,15,18,21,24,27,30]
    ];
     
    arrays.map(function(elem,i){
       if(elem.indexOf(m)>=0)
          console.log(m+" trouvé dans t["+i+"] à l'index :"+elem.indexOf(m));
    });
    Il y'a surement mieux...

  3. #3
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Bonjour toufik,

    J'ai essayé ce code, mais ça ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    arrays = [
        [1, 4, 7, 10, 13, 16, 19, 22, 25, 28],
        [2, 5, 8, 11, 14, 17, 20, 23, 26, 29],
        [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
    ];
     
    for (var m = 1; m = 10; m++) {
     
        arrays.map(function(elem, i) {
            if (elem.indexOf(m) >= 0) {
                switch (i) {
                    case 0:
                        document.write("Ligne 0");
                        break;
                    case 1:
                        document.write("Ligne 1");
                        break;
                    case 2:
                        document.write("Ligne 3");
                        break;
                    default:
                }
            }
        });
    }

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    Mais pourquoi tu insistes à utiliser switch, elle ne te servira à rien de tout, puis ton dernier code ne fonctionne pas parce que tu as oublié l'opérateur inférieur à < dans la boucle m <= 10 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var arrays = [
        [1, 4, 7, 10, 13, 16, 19, 22, 25, 28],
        [2, 5, 8, 11, 14, 17, 20, 23, 26, 29],
        [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
    ];
    for (var m = 1; m <= 10; m++) {
        arrays.map(function(elem, i) {
        	if (elem.indexOf(m) >= 0) {
    		document.write("Ligne "+i);
            }
        });
    }

  5. #5
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Merci pour ta réponse

    Mais pourquoi tu insistes à utiliser switch
    Parce que j'aimerais, pour chaque cas de (i), mettre un traitement précis.

    Voici, la fonction que j'essaye de coder :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    function calcInArray(){
     
    	var cle ="987654";
    	var tab = [];
     
    	for (var m=0; m <= cle.lenght; m++){
     
    		switch(m) {
    			case in [1,4,7,10,13,16,19,22,25,28] :
    			// code block
    			tab[m][0] = "a";
    			tab[m][1] = "a";
    			break;
     
    			case in [2,5,8,11,14,17,20,23,26,29]:
    			// code block
    			tab[m][0] = "b";
    			tab[m][1] = "b";
    			tab[m][2] = "b";
    			break;
     
    			case in [3,6,9,12,15,18,21,24,27,30]:
    			// code block
    			tab[m][0] = "c";
    			tab[m][1] = "c";
    			break;
     
    			default:
    			// code block
    		}
    	}
    }

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    D'accord, et à quoi sert la variable var cle ="987654"; ?

    tu veux vérifier l'existence et l'index de chaque chiffre de cle dans les trois tableaux ?

  7. #7
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    un truc comme ca ?
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function calcInArray(){
    	const cle = "987654";
    	const tab = [];
     
    	cle.split('').forEach((m, i) => {
            if([1,4,7,10,13,16,19,22,25,28].includes(i)) {
                tab.push(['a', 'a']);
            } else if([2,5,8,11,14,17,20,23,26,29].includes(i)) {
                tab.push(['b', 'b', 'b']);
            } else {
                tab.push(['c', 'c']);
            }
        });
    	console.log(tab);
    }
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  8. #8
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    à quoi sert la variable var cle ="987654"; ?
    Je m'en sert pour faire des calculs en combinaison avec une deuxième série de chiffres.

    tu veux vérifier l'existence et l'index de chaque chiffre de clé dans les trois tableaux ?
    Je dois remplir un tableau tab, de deux dimensions, par des valeurs.

    Ce tableau me servira pour renseigner les cellules d'un "<table>" ensuite.

    Je boucle sur la valeur de m (qui correspond aux lignes du tableau tab) avec une valeur max de cle.length.

    Si par exemple, la valeur de m correspond aux lignes [1,4,7,10,13,16,19,22,25,28], le code suivant est exécuté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tab[m][0] = "a";
    tab[m][1] = "a";
    et ainsi de suite

  9. #9
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    function calcInArray(){
    	var tab = [],cle="987654";	
    	for(let m=0;m<=cle.length;m++){
    		[
    			[1, 4, 7, 10, 13, 16, 19, 22, 25, 28],
    			[2, 5, 8, 11, 14, 17, 20, 23, 26, 29],
    			[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
    		]
    		.map(function(elem,i){
    			if(elem.includes(m)){
    				!tab[m]?tab[m]=[]:'';//si tab[m] n'est pas défini, on l'initialise à [] tableau vide, sinon on ne fait rien
    				switch(i) {
    					case 0 :
    						tab[m][0]="a0";
    						tab[m][1]="a1";
    					break;
     
    					case 1:
    						tab[m][0] = "b0";
    						tab[m][1] = "b1";
    						tab[m][2] = "b2";
    					break;
     
    					case 2:
    						tab[m][0] = "c0";
    						tab[m][1] = "c1";
    					break;
    				}
    			}
    		});
    	}
    	return tab;
    }
    console.log(calcInArray());

  10. #10
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Bonjour Doksuri,

    Citation Envoyé par Doksuri Voir le message
    un truc comme ca ?
    Je viens d'essayer ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    function calcInArray(){
    	const cle = "987654";
    	const tab = [];
     
    	cle.split('').forEach((m, i) => {
            if([1,4,7,10,13,16,19,22,25,28].includes(i)) {
                tab.push(['a0', 'a1']);
            } else if([2,5,8,11,14,17,20,23,26,29].includes(i)) {
                tab.push(['b0', 'b1', 'b2']);
            } else {
                tab.push(['c0', 'c1']);
            }
        });
           document.write(tab[0][1]+"<br>");
           document.write(tab[1][1]+"<br>");
           document.write(tab[2][1]+"<br>");
    }
     
    calcInArray();
    Et je vois que le tableau résultant s'affiche comme ça :

    c0,c1,a0,a1,b0,b1,b2,c0,c1,a0,a1,b0,b1,b2c1
    Comment les faire afficher de de cette manière :

    a0,a1
    b0,b1,b2
    c0,c1
    a0,a1
    b0,b1,b2
    c0,c1
    Les valeurs du tableau ne sont pas dans l'ordre croissant.

    ces lignes de codes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    document.write(tab[0][1]+"<br>");
    document.write(tab[1][1]+"<br>");
    document.write(tab[2][1]+"<br>");
    afficheront :

    c1
    a1
    b1

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Sinon un swith true

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    tab1=[1,4,7,10,13,16,19,22,25,28];
    tab2=[2,5,8,11,14,17,20,23,26,29];
    tab3=[3,6,9,12,15,18,21,24,27,30];
     
    switch(true) {
    			case tab1.includes(m) :
    			// code block
    			break;
     
    			case tab2.incudes(m):
    			// code block
    			break;
     
    			case tab3.includes(m):
    			// code block
    			break;
     }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  12. #12
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Bonjour SpaceFrog,

    Merci pour le code.

    J'ai essayé d'adapter le code, mais je ne peux (accéder) afficher les éléments de tab en utilisant une boucle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    var tab = [];
    var tab1 = [1, 4, 7, 10, 13, 16, 19, 22, 25, 28];
    var tab2 = [2, 5, 8, 11, 14, 17, 20, 23, 26, 29];
    var tab3 = [3, 6, 9, 12, 15, 18, 21, 24, 27, 30];
     
    for (var m = 1; m <= 10; m++) {
        !tab[m] ? tab[m] = [] : ''; //si tab[m] n'est pas défini, on l'initialise à [] tableau vide, sinon on ne fait rien
        switch (true) {
            case tab1.includes(m):
                // code block
                document.write("Number " + m + " is in tab 1<br>");
                tab[m][0] = "a0";
                tab[m][1] = "a1";
                tab[m][2] = "";
                tab[m][3] = "";
                break;
     
            case tab2.includes(m):
                // code block
                document.write("Number " + m + " is in tab 2<br>");
                tab[m][0] = "b0";
                tab[m][1] = "b1";
                tab[m][2] = "b2";
                tab[m][3] = "";
                break;
     
            case tab3.includes(m):
                // code block
                document.write("Number " + m + " is in tab 3<br>");
                tab[m][0] = "c0";
    	    tab[m][1] = "";
    	    tab[m][2] = "";
                tab[m][3] = "c4";
                break;
            default:
                document.write("please select number from 1 to 30<br>");
        }
    }
     
     
    //document.write(tab);
     
    // Parcourir les éléments de tab 
    for (var lg = 0; lg <= tab.length; lg++) {
        for (var col = 0; col <= 4; col++) {
            document.write(tab[lg][col] + " | ");
            if (col == 4) document.write("|<br>");
        }
    }

  13. #13
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    Bonjour,

    Remplaces les boucles for par forEach :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    tab.forEach((elem,i)=>{
    	elem.forEach((elem1,i1)=>{
    		document.write(elem1 + " | ");
    	});
    	if([3,6].includes(i)) document.write("<br />");
    });

  14. #14
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Re,

    Merci pour la correction.

    En effet, que signifie le deuxième chiffre dans : if[3,6] ?

  15. #15
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    Cette instruction permet de sauter une ligne <br /> lorsque la valeur de i est 3 ou 6 ... c'est la même chose que : tu peux ajouter d'autres valeurs si tu veux...

  16. #16
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Merci Toufik

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Language]Probleme de switch case
    Par nana1 dans le forum Langage
    Réponses: 20
    Dernier message: 17/11/2005, 00h49
  2. switch case pour deux variable en meme temps
    Par petitours dans le forum C
    Réponses: 3
    Dernier message: 06/11/2005, 19h20
  3. [Tableaux] Problème avec Switch case
    Par philippef dans le forum Langage
    Réponses: 4
    Dernier message: 07/09/2005, 16h37
  4. probleme gestion condition switch - case
    Par DarkMax dans le forum Langage
    Réponses: 5
    Dernier message: 07/09/2005, 14h25
  5. [Language] aide sur les switch case
    Par pouss dans le forum Langage
    Réponses: 3
    Dernier message: 05/04/2005, 11h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo