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 :

Comment simplifier ou raccourcir.


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Par défaut Comment simplifier ou raccourcir.
    Bonjour,

    Voilà mon instruction if se répète 95 fois, comment simplifier ou raccourcir.

    EX :

    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
     if ((quantite.value<=12)&&(departement.value==01)) {
            total.value=24.21;
          }
     
     if ((quantite.value<=12)&&(departement.value==02)) {
            total.value=23.22;
          } 
     
    if ((quantite.value<=12)&&(departement.value==03)) {
            total.value=19.95;
          }
     
    if ((quantite.value<=12)&&(departement.value==04)) {
            total.value=17.46;
          }
    Jusqu’à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ((quantite.value<=12)&&(departement.value==95)) {
            total.value=35.41;
          }

    La quantité ne varie pas (<=12) par contre il y à 95 départements et un total pour chaque département.

    Dès que la quantité est (>12) il n’y a qu’une instruction if.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (tota6.value>12) {
           total.value=Math.round((tota7.value * tota6.value) * 100)/100 ;
          }
    Donc comment simplifier la première partie avec ses 95 instructions if ?

    Merci

    Cireultra

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    une boucle for + un tableau contenant les valeurs de la somme

  3. #3
    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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    avec un switch :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if (quantité.value<=12){
          switch (department.value){
                                                     case ('01'): total.value=24.1;
                                                                        break:
                                                     case ('02'): total.value=???;
                                                                        break;
                                                      case ('03'): total.value=???;
                                                                        break;
                                                      ../.. 
                                                     }
    }
    else { total.value=Math.round((tota7.value * tota6.value) * 100)/100 ;}
    attention 01 != '01'
    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 !

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    plus optimisé avec le tableau et la boucle for ^^

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Par défaut Merci
    Merci pour les réponses.

    Je vais tester vos idées.


    A +

    Cireultra

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Par défaut Oui avec switch.
    Re

    J'y suis arrivé avec le switch, mais pas avec une boucle for + un tableau contenant les valeurs de la somme.

    Le chomeur : un petit exemple de code svp.

    A+

    Cireultra

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut

    Euh... pourquoi tu ne mets pas tes valeurs dans un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var tarifs = ['rien', 24.21, ...]
    (la valeur rien au début sert juste à mettre en correspondance les index du tableau avec le n° de département) et ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (quantite.value<=12) {
        total.value=prix[parseInt(departement.value,10)];
    }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Par défaut Détails.
    Merci Bovino.

    Tu pourrais m'expliquer cette ligne de ton exemple: total.value=prix[parseInt(departement.value,10)];

    A+

    Cireultra

  9. #9
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    c'est ce que je t'expliquais plus haut :

    tu stockes tes prix dans un tableau :

    var prix['null',23,34 ...] // on met null car un tableau commence a l'index 0

    puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(var i = 1 ; i < nombre de département ; i++){
     
    total.value=prix[i]; récupère le prix ....
     
    }

    la ligne de bovino :

    total.value=prix[parseInt(departement.value,10)];

    parseInt(Arguement1 , 10) :
    - Argument.value corespondra a l'index
    - 10 sépécifie une base de 10
    - parseInt transforme la valeur du champs qui est au format texte en entier

    au final cela revient au même que faire :

    prix[x] ou X est un entier

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    @ le_chomeur :
    A moins que quelque chose m'ait échappé, il n'y a pas besoin de boucle for
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  11. #11
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    ha vi je pensais qu'on affectais un prix par département
    un peu l'ouest ces temps ci

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Par défaut Merci
    Merci pour ces explications.

    Je vais re tester avec un tableau

    A +

    Cireultra

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Par défaut le chomeur
    Le chomeur
    Oui il y a un prix fixe et différent pour chaque département.

    dep 01 -> 24.21
    dep 02 -> 23.22
    etc
    Jusqu'à 95 départements

    A +

    Cireultra

  14. #14
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    total.value= quantite.value<=12 ? prix[parseInt(departement.value,10)] : Math.round((tota7.value * tota6.value) * 100)/100 ;

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/05/2008, 12h31
  2. Comment simplifier les beans Hibernate
    Par Dr@ke dans le forum JSF
    Réponses: 16
    Dernier message: 12/12/2007, 12h15
  3. Comment simplifier mon script ?
    Par MMO95 dans le forum Langage
    Réponses: 7
    Dernier message: 09/01/2007, 00h21
  4. [Makefile] Comment simplifier un Makefile compliqué
    Par bouba82 dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 27/11/2006, 10h37

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