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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 24
    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 confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 667
    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
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    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
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → 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 : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    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