1. #1
    Membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 150
    Points : 48
    Points
    48

    Par défaut Objet Map et ajout seconde valeur à la clé

    Bonjour,
    En partant de mon code existant ci dessous, je me pose plusieurs questions

    Voici le code ( 100% fonctionnel )
    Code JS : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    var myMap = new Map();
    var ttwLast = "T+ 0:00";
    var twaLast = null;
     
    function space(val) {
        if (val < 10) {
            val = " " + val;
        }
        return val;
    }
     
    function genIteNext (ttwCurr) {
        var ttwCurr = ttwCurr.match(/.*?([0-9]{1,3}):([0-9]{2})/);
        var ttwNext = [];
        if ((parseFloat(ttwCurr[2]) + 10) < 60) {
            ttwNext = "T+" + space (parseFloat(ttwCurr[1])) + ":" + ("0" + (parseFloat(ttwCurr[2]) + 10)).slice(-2);
        } else {
            ttwNext = "T+" + space (parseFloat(ttwCurr[1]) + 1) + ":" + ("0" + (parseFloat(ttwCurr[2]) + 10) % 60).slice(-2);
        }
        return ttwNext;
    }
     
    for (var i = 0; i < points.length; i++) {
        while (points[i].ttw !== ttwLast) {
            twaMap.set (ttwLast, twaLast);
            ttwLast = genIteNext(ttwLast);
        }
        twaLast = points[i].twa;
        ttwLast = points[i].ttw;
        myMap.set(points[i].ttw, points[i].twa);
    }
    console.log(myMap);

    Ce code me génère une map ayant pour clé ttw et pour valeur twa.

    J'ai besoin d'une autre map ayant pour clé ttw et pour valeur btw, je peux la créer assez facilement en modifiant quelques petites choses mais j'aimerais éviter les répétitions.
    Je sais que nativement, il n'est pas possible de générer une map avec une clé et deux valeurs.

    La première question est via une librairie additionnelle est il possible de générer une map sous la forme (clé, valeur1, valeur2) ce qui pour moi donnerait (ttw, twa, btw) ce qui serait assez facile à mettre en oeuvre dans le code ci dessus.

    La seconde question est si oui ou je peux trouver cette librairie ?

    La troisième et dernière question, est ce que en voulant me simplifier la vie je suis pas en train de faire tout l'inverse et que je ferais mieux de rester sous forme de tableau ?

    Merci

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    février 2009
    Messages
    5 930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : février 2009
    Messages : 5 930
    Points : 21 645
    Points
    21 645
    Billets dans le blog
    57

    Par défaut



    Mais la valeur de la Map peut être un String, un Number, un Object ou un Array ! Et un Array peut contenir une ou plusieurs valeurs.

    Blog



    Nota bene : si vous devez être compatible avec les navigateurs obsolètes (IE8 et plus), vous devez convertir les codes ES2015 en ES5 avec Babel.

    FAQ JS Tutoriels JS

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    juin 2003
    Messages
    6 962
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2003
    Messages : 6 962
    Points : 11 012
    Points
    11 012

    Par défaut

    dans une valeur d'un objet Map, vous pouvez stocker un objet standard qui contient 2 valeurs comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    myMap.set(
          "clé"
        ,
        {
            "val1" : 77,
            "val2" : 1234,
        }
    );

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 150
    Points : 48
    Points
    48

    Par défaut

    Ok merci pour les renseignements je vais regarder ça de plus près ce soir, je maitrise pas l'architecture du truc mais je vais me renseigner

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 150
    Points : 48
    Points
    48

    Par défaut

    Comme je m'y attendais c'est pas aussi simple ...

    Voila le code que je test, je dois me craquer quelque part mais à première vue comme ça je vois pas ...

    Code JS : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    var myMap = new Map();
    var ttwLast = "T+ 0:00";
    var twaLast = null;
    var btwLast = null;
     
    function space(val) {
        if (val < 10) {
            val = " " + val;
        }
        return val;
    }
     
    function genIteNext (ttwCurr) {
        var ttwCurr = ttwCurr.match(/.*?([0-9]{1,3}):([0-9]{2})/);
        var ttwNext = [];
        if ((parseFloat(ttwCurr[2]) + 10) < 60) {
            ttwNext = "T+" + space (parseFloat(ttwCurr[1])) + ":" + ("0" + (parseFloat(ttwCurr[2]) + 10)).slice(-2);
        } else {
            ttwNext = "T+" + space (parseFloat(ttwCurr[1]) + 1) + ":" + ("0" + (parseFloat(ttwCurr[2]) + 10) % 60).slice(-2);
        }
        return ttwNext;
    }
     
    for (var i = 0; i < points.length; i++) {
        while (points[i].ttw !== ttwLast) {
            myMap.set (ttwLast, {twaLast, btwLast} );
            ttwLast = genIteNext(ttwLast);
        }
        ttwLast = points[i].ttw;
        twaLast = points[i].twa;
        btwLast = points[i].btw;
        myMap.set(points[i].ttw, {points[i].twa, points[i].btw} );
    }
    console.log(myMap);

    Ça paraissait plutôt simple sur le papier mais non c'était trop beau ...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 150
    Points : 48
    Points
    48

    Par défaut

    La prochaine fois au lieu de partir tête baissée comme un fou furieux j'prendrais le temps de lire correctement l'exemple qu'on me donne ...

    Code JS : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    var myMap = new Map();
    var ttwLast = "T+ 0:00";
    var twaLast = null;
    var btwLast = null;
     
    function space(val) {
        if (val < 10) {
            val = " " + val;
        }
        return val;
    }
     
    function genIteNext (ttwCurr) {
        var ttwCurr = ttwCurr.match(/.*?([0-9]{1,3}):([0-9]{2})/);
        var ttwNext = [];
        if ((parseFloat(ttwCurr[2]) + 10) < 60) {
            ttwNext = "T+" + space (parseFloat(ttwCurr[1])) + ":" + ("0" + (parseFloat(ttwCurr[2]) + 10)).slice(-2);
        } else {
            ttwNext = "T+" + space (parseFloat(ttwCurr[1]) + 1) + ":" + ("0" + (parseFloat(ttwCurr[2]) + 10) % 60).slice(-2);
        }
        return ttwNext;
    }
     
    for (var i = 0; i < points.length; i++) {
        while (points[i].ttw !== ttwLast) {
            myMap.set (ttwLast, {twaVal : twaLast, btwVal : btwLast} );
            ttwLast = genIteNext(ttwLast);
        }
        ttwLast = points[i].ttw;
        twaLast = points[i].twa;
        btwLast = points[i].btw;
        myMap.set(points[i].ttw, {twaVal : points[i].twa, btwVal : points[i].btw} );
    }
    console.log(myMap);

    Fait correctement ce que je souhaite, merci danielhagnoul et mathieu

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/03/2015, 19h33
  2. ajouter une valeur d'une clé dans une map
    Par chirazch dans le forum C++
    Réponses: 7
    Dernier message: 06/05/2013, 18h36
  3. Prob de lecture des valeurs de l'objet map
    Par micanti dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 12/07/2006, 20h38
  4. Prob de lecture des valeurs de l'objet map
    Par micanti dans le forum Struts 1
    Réponses: 12
    Dernier message: 12/07/2006, 17h12
  5. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Général Java
    Réponses: 13
    Dernier message: 03/04/2005, 13h41

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