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 éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    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 507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 507
    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 éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    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 507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 507
    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 éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    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 507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 507
    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
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 494
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 494
    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 éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    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 507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 507
    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 éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    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 éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    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 507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 507
    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 éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    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 507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 507
    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 éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    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