Partage
  • Partager sur Facebook
  • Partager sur Twitter

attribuer une valeur à une variable sous condition

    19 octobre 2020 à 14:11:48

    Hello,

    Comme on dit "un morceau de code vaut mieux qu'un long discours"

    Voici ce que j'ai réalisé : 

     if (idContainer = '11', '21', '31') {
            type_action = 'price_change';
          } else if (idContainer = '12', '22', '32') {
            type_action = 'new_product';
          } else if (idContainer = '13', '23', '33') {
            type_action = 'new_trade_off';
          } else if (idContainer = '14', '24', '34') {
            type_action = 'new_repply';
          } else {
            type_action = 'new_product'
          }
    
          if (idContainer = '11', '12', '13', '14', '15', '16') {
            type_transac = 'Vente,Location';
          } else if (idContainer = '21', '22', '23', '24', '25', '26') {
            type_transac = 'Vente';
          } else if (idContainer = '31', '32', '33', '34', '35', '36') {
            type_transac = 'Location';
          } else {
            type_transac = 'Vente'
          }
    



    J'ai un idContainer à 12 et je souhaiterai assigner 2 variables en fonction de l'ID.

    Actuellement j'ai un retour des premiers résultats seulement soit 'price_change' et 'Vente,Location'.

    Merci pour votre aide 

    -
    Edité par HCP29 19 octobre 2020 à 14:14:49

    • Partager sur Facebook
    • Partager sur Twitter
      19 octobre 2020 à 14:28:03

      Salut,

      Pour vérifier une égalité parfaite, on utilise : ===

      Pour vérifier une égalité sans préjudice de type (String vs Number par exemple) : ==

      Pour assigner une valeur : =

      Les virgules n'ont aucune sens en javascript lorsqu'elles se trouvent en dehors d'un array, d'un objet, d'une déclaration ou un appel de fonction. (Donc pas de virgule dans tes conditions).

      "Et aussi" : &&

      "Ou alors" : ||

      "Inférieur à" (sans préjudice de type) : <

      "Inférieur ou égal à" (sans préjudice de type) : <=

      "Supérieur à" (sans préjudice de type) : >

      "Supérieur ou égal à" (sans préjudice de type) : >=

      Maintenant, à toi de modifier ton code comme il convient.

      -
      Edité par BrainError 19 octobre 2020 à 14:41:18

      • Partager sur Facebook
      • Partager sur Twitter
        19 octobre 2020 à 14:52:54

        edit:

        En fin de compte ça ne fonctionne pas.

        Il rentre à chaque fois dans la première condition.

              if (idContainer === '11' || '21' || '31') {
                type_action = 'price_change';
              } else if (idContainer === '12' || '22' || '32') {
                type_action = 'new_product';
              } else if (idContainer === '13' || '23' || '33') {
                type_action = 'new_trade_off';
              } else if (idContainer === '14' || '24' || '34') {
                type_action = 'new_repply';
              } else {
                type_action ='new_product'
              }
        
              if (idContainer === '11' || '12' || '13' || '14' || '15' || '16') {
                type_transac = 'Vente,Location';
              } else if (idContainer === '21' || '22' || '23' || '24' || '25' || '26') {
                type_transac = 'Vente';
              } else if (idContainer === '31' || '32' || '33' || '34' || '35' || '36') {
                type_transac = 'Location';
              } else {
                type_transac ='Vente'
              }

        type_transac = Vente,Location

        type_action = price_change 

        Alors que idContainer = 12

        Bien sur le résultat est le même avec un idContainer à 22

        -
        Edité par HCP29 19 octobre 2020 à 15:03:36

        • Partager sur Facebook
        • Partager sur Twitter
          19 octobre 2020 à 15:02:03

          Bonjour,

          en effet il serait plus judicieux de faire 

          if (idContainer === '11' || idContainer === '21' || idContainer === '31') {
          • Partager sur Facebook
          • Partager sur Twitter

          Développeur react freelance à Toulouse  

          Je suis développeur  react freelance spécialisé dans la création de site internet basé à Toulouse

            19 octobre 2020 à 15:03:37

            Oui, parce que ça n'est toujours pas bon.

            Tu ne peux pas lister tes comparaison de la sorte. Pour chaque comparaison, il ne peux exister que 2 valeurs comparées, pas 6.

            -
            Edité par BrainError 19 octobre 2020 à 15:12:33

            • Partager sur Facebook
            • Partager sur Twitter
              19 octobre 2020 à 15:06:03

              Et vous ne voyez pas un autre moyen que de faire ça ? Car c'est un peu lourd ^^

               
              if (route[0] === 'ProductListTab' & route[2] === 'IdContainer') {
                    console.log(idContainer)
                    if (idContainer === '11' || idContainer === '21' || idContainer === '31') {
                      type_action = 'price_change';
                    } else if (idContainer === '12' || idContainer === '22' || idContainer === '32') {
                      type_action = 'new_product';
                    } else if (idContainer === '13' || idContainer === '23' || idContainer === '33') {
                      type_action = 'new_trade_off';
                    } else if (idContainer === '14' || idContainer === '24' || idContainer === '34') {
                      type_action = 'new_repply';
                    } else {
                      type_action ='new_product'
                    }
              
                  if (idContainer >= '11' && idContainer <= '16') {
                      type_transac = 'Vente,Location';
                    } else if (idContainer >= '21' && idContainer <= '26') {
                      type_transac = 'Vente';
                    } else if (idContainer >= '31' && idContainer <= '36') {
                      type_transac = 'Location';
                    } else {
                      type_transac ='Vente'
                    }
              

              -
              Edité par HCP29 19 octobre 2020 à 15:12:29

              • Partager sur Facebook
              • Partager sur Twitter
                19 octobre 2020 à 15:12:23

                Je te suggère plutôt ça :

                switch(idContainer.slice(-1)) {
                   case '1':
                      type_action = 'price_change';
                      break;
                   case '2':
                      type_action = 'new_product';
                      break;
                   case '3':
                      type_action = 'new_trade_off';
                      break;
                   case '4':
                      type_action = 'new_repply';
                      break;
                   default:
                      type_action = 'new_product';
                      break;
                }
                // vérifier les unités
                
                switch(idContainer.slice(1)) {
                   case '1':
                      type_transac = 'Vente,Location';
                      break;
                   case '2':
                      type_transac = 'Vente';
                      break;
                   case '3':
                      type_transac = 'Location';
                      break;
                   default:
                      type_transac ='Vente'
                      break;
                }
                // vérifier les dizaines
                



                • Partager sur Facebook
                • Partager sur Twitter
                  19 octobre 2020 à 15:16:31

                  BrainError a écrit:

                  Je te suggère plutôt ça :

                  switch(idContainer.slice(-1)) {
                     case '1':
                        type_action = 'price_change';
                        break;
                     case '2':
                        type_action = 'new_product';
                        break;
                     case '3':
                        type_action = 'new_trade_off';
                        break;
                     case '4':
                        type_action = 'new_repply';
                        break;
                     default:
                        type_action = 'new_product';
                        break;
                  }
                  // vérifier les unités
                  
                  switch(idContainer.slice(1)) {
                     case '1':
                        type_transac = 'Vente,Location';
                        break;
                     case '2':
                        type_transac = 'Vente';
                        break;
                     case '3':
                        type_transac = 'Location';
                        break;
                     default:
                        type_transac ='Vente'
                        break;
                  }
                  // vérifier les dizaines
                  



                  Un switch accepte plusieurs valeurs ?

                  Car en gros mon type_transac peut être par exemple location si idContainer >= 31 & <= 36

                  case >= 31 & <= 36
                  case [31, 32, 33, 34, 35, 36]
                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 octobre 2020 à 16:31:51

                    Non, tu n'as pas compris mon exemple.

                    'slice(1)' sert à récupérer le premier caractère de la chaine 'idContainer', c'est à dire le chiffre des dizaines, qui est toujours '3' dans ce cas-ci.

                    Tout comme 'slice(-1)' sert à récupérer le dernier charactère de 'idContainer', c'est à dire le chiffre des unités.

                    Donc non, une seule valeur par test pour 'switch', mais ça ne t'empêche pas de traiter ta valeur à comparer en amont.

                    -
                    Edité par BrainError 19 octobre 2020 à 16:33:39

                    • Partager sur Facebook
                    • Partager sur Twitter

                    attribuer une valeur à une variable sous condition

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown