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 :

clef Map() = reference ?


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 489
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 489
    Par défaut clef Map() = reference ?
    Bonjour, je suis confronte a un probleme :
    j'ai un Map() auquel je set des valeures, et mes clefs sont des objects. jusque la tout va bien, le probleme est lorsque j'essaye de recuperer mes clefs
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    const test = new Map();
    test.set({a:'a', b:'b'}, '1er element');
    console.log('get object 1', test.get({a:'a', b:'b'})); //undefined
     
    const key2 = {c:'c', d:'d'};
    test.set(key2, '2eme element');
    console.log('get object 2', test.get(key2)); // 2eme element
     
    test.forEach((v, k) => {
        console.log('key:',k, 'value:', v);
        // key: {a: 'a', b: 'b'} value: 1er element
        // key: {c: 'c', d: 'd'} value: 2eme element
    });

    developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Map
    la doc dit qu'on peu lui passer ce qu'on veut comme clef (primitive ou object), mais pas que ce doit etre la reference... j'ai rate quelque chose ? c'est possible de recup la clef sans sa reference ? (nouvel object identique)
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2009
    Messages : 132
    Par défaut
    Si on utilise un `Object` comme clé d'une `Map`, il faut utiliser une référence sur ce même objet pour récupérer la valeur.

    Dans l'exemple, en faisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test.get({a:'a', b:'b'})
    On crée en fait un nouvel objet `{a:'a', b:'b'}` qui n'est pas égal à l'objet utilisé comme clé. D'ailleurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {a:'a', b:'b'} === {a:'a', b:'b'}
    retourne `false`.

  3. #3
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 489
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 489
    Par défaut
    oui, d'ou le titre de ma discussion... n'y a-t-il pas moyen de recuperer la clef avec un nouvel object (identique) ?
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2009
    Messages : 132
    Par défaut
    Si, en bouclant sur les items de la `Map` et en faisant manuellement de la comparaison. Mais on perd l'intérêt de la `Map` dans ce cas, et ça traduit à mon avis un mauvais design de l'algorithme (structure de données pas adaptée).

Discussions similaires

  1. [Création Map clef / valeur]
    Par newbies-java dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 04/09/2007, 09h37
  2. Clefs composees +mapping 3 tables
    Par willoi dans le forum Hibernate
    Réponses: 9
    Dernier message: 13/03/2007, 13h22
  3. Map et clef accentuées
    Par Alfred83 dans le forum C++
    Réponses: 8
    Dernier message: 28/02/2007, 00h41
  4. Réponses: 3
    Dernier message: 20/01/2007, 19h09
  5. Réponses: 4
    Dernier message: 08/03/2006, 13h22

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