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 :

table associatif en JAVASCRIPT


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de moukit233
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    240
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 240
    Points : 123
    Points
    123
    Par défaut table associatif en JAVASCRIPT
    salut tout le monde,
    je suis en train de developpez un site web.......
    j'ai developpé une fonction js pour ajouter de clients dans un dojox.grid,
    dans cette fonction j'ai creé un tableau pour stocker les lignes ajouter dans le grid
    voici le code de cette fonction.js

    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
     
     var tabNewVal = new Array();
         function gotVal(items, request){
             for (var i = 0; i < items.length; i++) { 
                 //recuperation des valeurs
                 id   = grid.store.getValue(items[i], "id");
                 nom = grid.store.getValue(items[i], "nom");
                 prenom   = grid.store.getValue(items[i], "prenom");
     
                 tab[i] = new Array(id, nom, prenom);
             }
         } 
         grid.store.fetch({query: {}, onComplete: gotVal}); 
     
         var tab = new Array();
         tab = dojo.toJson(tabNewVal, true);
         alert(tab);
    mais j'ai trouvé un diffuculte pour recuperer les valeur stockeé dans la tableu
    vous pouvez m'aidez?
    ou un moyen pour declarer un tableau associatif c a dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    var tab = new array('id'=> 'valeur','nom'=>'valeur','prenom'=>'valeur'))
    mais en javascript
    vous vouyez???

    merci d'avance
    «En théorie, la théorie et la pratique sont les mêmes. En pratique, ils le sont pas."
    Albert Einstein.

  2. #2
    Membre actif Avatar de nod__
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 176
    Points : 226
    Points
    226
    Par défaut
    Les tableaux associatifs n'existent pas en javascript.

    Les objets par contre...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var objet = {"id":"valeur", "nom":"valeur"};
    etc. Tu remarqueras aussi que c'est exactement le format JSON, elle est pas belle la vie ?

    (et a noter que tu peux mal utiliser les Array() pour faire ce que tu veux, mais c'est mal et moins efficace).

  3. #3
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Je ne connais pas Dojo mais je sais que la lib Prototype fournit un objet Hash qui apporte de nombreuses méthodes très utiles aux tableaux associatifs que tu décris : peut-être existe-t-il un équivalent dans l'API de Dojo ?

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Les tableaux associatifs n'existent pas en javascript.
    heu comment appelles tu ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    tabasso=new Array();
    tabasso['un']=1;
    tabasso['deux']=2;
     
    alert(tabasso['deux'])

    array littéral ... la nuance est subtile ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Citation Envoyé par nod__ Voir le message
    Les tableaux associatifs n'existent pas en javascript.

    Les objets par contre...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var objet = {"id":"valeur", "nom":"valeur"};
    etc. .
    Humm ... Depuis quand "les tableaux associatifs n'existent pas en javascript" ? Si je ne me trompe, un objet EST un tableau associatif !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        var objet = {"id":"valeur", "nom":"Dupont"};
        alert(objet["id"]);
     
        objet["prenom"]="Eric";
        alert(objet["prenom"] + " "+ objet["nom"]);

    @moukit233: ton store implémente l'interface dojo.data.api.Write, tu disposes donc d'une fonction isDirty(item) qui indique si l'item a été modifié. Et comme je suppose que tu utilises un ItemFileWriteStore, tu disposes aussi d'un tableau _pending._newItems qui enregistre ni plus ni moins que les items ajouté au store. Tu devrais peut-être plus simplement l'utiliser.

    Néanmoins si tu persistes dans ta démarche, et comme RomainVALERI le pressentais , il existe un package dojox.collections qui dispose d'une class Dictionary qui correspond à ce que tu veux faire.

    ERE
    Quand une tête pense seule, elle devient folle.

  6. #6
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Les tableaux associatifs n'existent pas en javascript :
    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
    20
    21
    22
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <title>Les tableaux associatifs n existent pas en javascript</title>
      <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
      <style type="text/css">
      /* code css */
      </style>
    </head>
    <body>
      <!-- code xhtml -->
      <script type="text/javascript">
      <!--
      tabasso=new Array();
      tabasso['un']=1;
      tabasso['deux']=2;
     
      alert(tabasso.length)
      //-->
      </script>
    </body>
    </html>
    On utilise un moyen détourné pour les créer, les propriétés d'objets. Dans l'exemple ci-dessus on voit bien que le tableau à une taille de 0, car on a affecté des valeurs à ses propriétés et non ajouté des valeurs au tableau.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par franculo_caoulene Voir le message
    Les tableaux associatifs n'existent pas en javascript :
    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
    20
    21
    22
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <title>Les tableaux associatifs n existent pas en javascript</title>
      <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
      <style type="text/css">
      /* code css */
      </style>
    </head>
    <body>
      <!-- code xhtml -->
      <script type="text/javascript">
      <!--
      tabasso=new Array();
      tabasso['un']=1;
      tabasso['deux']=2;
     
      alert(tabasso.length)
      //-->
      </script>
    </body>
    </html>
    On utilise un moyen détourné pour les créer, les propriétés d'objets. Dans l'exemple ci-dessus on voit bien que le tableau à une taille de 0, car on a affecté des valeurs à ses propriétés et non ajouté des valeurs au tableau.
    Pour ma part, je suis aussi de cet avis, autre démonstration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    tabasso=new Array();
      tabasso['un']=1;
      tabasso['deux']=2;
     
      alert(tabasso.un)
    qui démontre bien que un est une propriété de tabasso et donc qu'il s'agit d'un objet et non d'un tableau.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Membre actif Avatar de nod__
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 176
    Points : 226
    Points
    226
    Par défaut
    héhé même pas besoin de répondre, merci franculo_caoulene et bovino, j'aurais pas dit mieux


    On s'en sort parce que tout est objet en JS.

    a noter que tu peux mal utiliser les Array() pour faire ce que tu veux, mais c'est mal et moins efficace
    j'avoue y'a des jours ou j'adore me citer

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    franculo ...
    le coup du length de l'array asso a déja ete traité dans les contributions me semble-t-il un boucle for in avec hasOwnProperty...
    et pour moi ce n'est pas parce qu'il n'arrive pas à donner directement un length que c'est pas un tableau asso même si on passe par des "propriétés"

    objet json ou array à propriété après avec un ensemble de prototypes on peut rapidement combler cette petite lacune de javascript
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Membre actif Avatar de nod__
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 176
    Points : 226
    Points
    226
    Par défaut
    Franchement je trouve que ce n'est pas une lacune. L'existence d'un objet Array est déjà suffisamment diffuse pour pas rajouter encore les tableaux associatifs.

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    franculo ...
    le coup du length de l'array asso a déja ete traité dans les contributions me semble-t-il un boucle for in avec hasOwnProperty...
    et pour moi ce n'est pas parce qu'il n'arrive pas à donner directement un length que c'est pas un tableau asso même si on passe par des "propriétés"

    objet json ou array à propriété après avec un ensemble de prototypes on peut rapidement combler cette petite lacune de javascript
    Dans ce cas, ce comportement doit être considéré comme étrange :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    tabasso=new Array();
      tabasso['un']=1;
      tabasso['deux']=2;
     
      alert(tabasso.length);
      tabasso.push('cinq');
      alert(tabasso.length);
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    prototype Beef

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array.prototype.push_elt=function()
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  13. #13
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Re,

    Sans rentrer dans un débat qui dépasse le simple cadre de ce post, je trouve quand même que asséner à quelqu'un que "Javascript ne gère pas les tableaux associatifs" relève de la sémantique plutôt que du pragmatisme.
    Ok les tableaux associatifs n'existent pas au sens strict du terme tel qu'on les connait et qu'on les définit par exemple en PHP (a priori la référence de moukit233). D'un autre côté une simple recherche sur le net avec les mots clés javascript tableau associatif renvoie de multiples réponses et tutoriels. Idem sur nos forums...

    De là expliquer que Objet <=> Tableau associatif ne ma parait pas délirant, quitte à bien mettre en avant que c'est avant tout un Objet et non particulièrement un Array ou autre. Et de montrer: (uniquement un exercice de style )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        var d= new Date();
        //ou var d = new RegExp(...)
        //... ou var d = new Array(); mais on est bien d'accord alors que ce qui 
        //nous intéresse est uniquement le fait que Array soit un Object...
        d["nom"]="DUPONT";
        d["prenom"]="Marc";
        alert(d["prenom"] + " " + d["nom"]);
    Et comme on parle d'Objet et non de Array, je ne vois pas pourquoi on se pose la question du .length

    ERE
    Quand une tête pense seule, elle devient folle.

  14. #14
    Membre régulier Avatar de moukit233
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    240
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 240
    Points : 123
    Points
    123
    Par défaut
    bonjour
    merci de votre reponse

    moi j'ai trouvé une moyenne pour creer un tableau associatif en javascript :
    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
    20
    21
     
      var tableau = new Array();
     
         grid.store.fetch({query: {}, onComplete: function(items, request){
         var tab= new Array(); 
         for (var i = 0; i < items.length; i++) { 
     
     
         var obj = { 
     
                 id                 : grid.store.getValue(items[i], "id"),
                 champ1             : grid.store.getValue(items[i], "champ1"),              
                 champ2             : grid.store.getValue(items[i], "champ2"),
                 champ3             : grid.store.getValue(items[i], "champ3")
                 };
         tab.push(obj); 
         } 
         tableau = dojo.toJson(tab, true); 
     
         }
         });
    Bon dev
    «En théorie, la théorie et la pratique sont les mêmes. En pratique, ils le sont pas."
    Albert Einstein.

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

Discussions similaires

  1. [PDO] question PDO nouveau enregistrement avec table associatif
    Par kate59 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/06/2011, 11h55
  2. table associatif a une clef et deux valeurs
    Par arm3366 dans le forum Langage
    Réponses: 3
    Dernier message: 27/06/2011, 20h33
  3. Générer un tableau associatif avec javascript
    Par beegees dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/04/2010, 10h59
  4. Récupérer un tableau html multidimensionnel associatif sous javascript
    Par Mormegil dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/04/2007, 17h47
  5. Vider une table MySQL suite à javascript:confirm()
    Par anutka dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 16/09/2005, 12h16

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