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 :

Réaliser une opération à partir d'une liste


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 24
    Points : 23
    Points
    23
    Par défaut Réaliser une opération à partir d'une liste
    Bonjour à tous,
    je suis débutant en javascript et je me retrouve face à un problème qui semble pas très compliqué mais qui me prend pas mal la tête
    En effet, j'ai dans mon algorithme une liste qui contient par exemple: [1,+,1].
    Je me demandais alors s'il existait une fonction qui retournait 2.
    J'ai essayé quelques petites choses comme parseInt(), parseFloat() etc... mais sans succès car le + renvoi un NaN.

    Toutefois j'ai quand même réfléchi à une solution tiers mais si cette fonction existe ça me semble plutôt pratique de la connaitre ^^.

    Je vous remercie d'avance si vous avez des questions supplémentaires, n'hésitez pas.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    si l'opérateur est toujours en 2e position du tableau, vous pouvez faire un test comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    let tableau = [8, "×", 2];
    let resultat;
     
    if ("+" === tableau[1]) {
        resultat = tableau[0] + tableau[2];
    }
     
    if ("×" === tableau[1]) {
        resultat = tableau[0] * tableau[2];
    }
     
    console.log(resultat);

  3. #3
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 187
    Points
    17 187
    Par défaut
    Salut

    Une autre approche
    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
    let tableau = [12, "+", 5];
    console.log('Pour tableau [12, "+", 5] resultat = '+eval(String(tableau.join(""))));
    // ==> 17
     
    tableau = [12, "/", 5];
    console.log('Pour tableau [12, "/", 5] resultat = '+eval(String(tableau.join(""))));
    // ==> 2.4
     
    tableau = [12, "%", 5];
    console.log('Pour tableau [12, "%", 5] resultat = '+eval(String(tableau.join(""))));
    // ==> 2
     
    tableau = [12, "-", 5];
    console.log('Pour tableau [12, "-", 5] resultat = '+eval(String(tableau.join(""))));
    // ==> 7
     
    tableau = [12.7, "-", 5.25, "+", 10];
    console.log('Pour tableau [12.7, "-", 5.25, "+", 10] resultat = '+eval(String(tableau.join(""))));
    // ==> 17.45
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Points : 1 280
    Points
    1 280
    Par défaut
    Bonjour,

    MIEUX..... OU PIRE ! (voir eval() ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function calculator( arr )
    {
      let expr = arr.join('');
      // avant d'utiliser eval(), on vérifie qu'on n'a QUE des chiffres et les caractères + - * / ( )
      let regex = /^[0-9\+\-\*\/\(\)]*$/; 
      if( expr.match(regex) )
      {
        //    return eval( expr );
        return expr + ' = ' + eval( expr );
      } else {
        return 'erreur';
      }
    }
    L'intérêt aussi est que les opérations respectent les règles (multiplication/division avant addition/soustraction,...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    console.log( calculator( [1, '+', 1] ) );
    console.log( calculator( [8, '*', 2] ) );
    console.log( calculator( [8, '/', 2] ) );
    console.log( calculator( [8, '+', 2, '*', 12, '+', 3] ) );
    console.log( calculator( ['(', 8, '+', 2, ')', '*', 12, '+', 3] ) );
    console.log( calculator( ['(', 8, '+', 2, ')', '*', 12, '/', 3] ) );
    console.log( calculator( [1, '<', 3] ) );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    1+1 = 2
    8*2 = 16
    8/2 = 4
    8+2*12+3 = 35
    (8+2)*12+3 = 123
    (8+2)*12/3 = 40
    erreur

Discussions similaires

  1. [MySQL] Réaliser une liste annuelle de festivités
    Par patriciaprovence dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 02/06/2009, 13h15
  2. [MySQL] réaliser une liste déroulante sur 3 niveaux provenant de 3 tables jointes mysql
    Par cel.Saint-Louis dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 06/11/2007, 15h22
  3. Comment réaliser une liste déroulante à deux niveaux !?
    Par Dubbiker dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 01/07/2007, 11h51
  4. Réponses: 4
    Dernier message: 25/12/2005, 18h46
  5. Réponses: 1
    Dernier message: 09/12/2005, 13h43

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