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 :

Additionner les valeurs de tableau


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 503
    Par défaut Additionner les valeurs de tableau
    Bonjour,
    Je me fais la main sur JS ne connaissant pas ce langage. Du coup j'ai fait un exo dont je ne comprends pas la solution et j'aurais besoin d'explications (j'ai qd même trouvé une réponse, mais c'était une usine à gaz)

    Le but est d'additionner ts les chiffres es nombres d'une date de naissance jusqu'à n'obtenir qu'un chiffre ultime : ex "1995-12-31" => 1+9+9+5+1+2+3+1 => 31 => 3+1 = 4

    La solution proposée est celle-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function lifePathNumber(dateOfBirth) {
     let num = dateOfBirth.split("-").join("");
      while(num > 9){
      num = ('' + num).split("").reduce((p,c) => +p+ +c);
      }
      return num;
    }
    Je ne comprends pas 2 choses :
    - let num qui est une string et qui est passée dans la condition du while ?
    - la syntaxe ('' + num) : que viennent faire les '' devant num ici, je remarque que enles enlevant ça lève une erreur de type "split is not a function"

    Merci à vous

  2. #2
    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
    Bonjour,

    let num qui est une string et qui est passée dans la condition du while ?
    num est bien un nombre;

    la syntaxe ('' + num) : que viennent faire les '' devant num ici, je remarque que enles enlevant ça lève une erreur de type "split is not a function"
    Les guillemets transforment num en chaîne, indispensable pour la méthode split();

    on peut aussi faire une ptite récursion:

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const add=(n)=> String(n).length>1 ? 
    		add(String(n).replace(/\D/g,"").split("").reduce((a,b)=>a+Number(b),0)) :
    		n
     
    console.log(add("1995-12-31"))

  3. #3
    Membre éprouvé
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 503
    Par défaut
    Désolé d'insister, justement je ne comprends pas pourquoi num est un nombre alors que ligne 2 au dessus il contient une chaine de caractère.
    Je devrais plutôt dire que je ne comrends pas pourquoi num n'est pas une chaine de caractère ds le while et idem en dessous où les quotes sont ajoutées

  4. #4
    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
    Alors on va dire que num est interprétée comme number parce qu'on la compare à un nombre...

  5. #5
    Membre éprouvé
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 503
    Par défaut
    Ok, c'est précisement le côté (et la puissance) de js que je pige pas pour l'instant, merci à toi d'avoir pris le temps

  6. #6
    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
    A la ligne 4, c'est un peu différent: reduce renvoie un nombre et split() ne convertit pas l'objet en chaine automatiquement;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. additionner les valeurs d'un champs
    Par gussoner dans le forum VBA Access
    Réponses: 12
    Dernier message: 15/09/2007, 15h32
  2. Réponses: 12
    Dernier message: 13/03/2007, 23h21
  3. c++ valeur la plus grande parmis les valeurs dun tableau
    Par corseb-delete dans le forum C++
    Réponses: 19
    Dernier message: 14/12/2006, 22h14
  4. Comment additionner les valeurs de 3 labels
    Par morrison29 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 16/11/2006, 19h52
  5. [MySQL] Additionner les valeurs d'un tableau
    Par covin85 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 09/08/2006, 14h00

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