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 :

Tableau indexé de tableaux d'objets


Sujet :

JavaScript

  1. #1
    Invité
    Invité(e)
    Par défaut Tableau indexé de tableaux d'objets
    Bonsoir,

    J'ai un tableau du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Array()
     
     [0]  Array()
     
              'nom' => ...
     
              'prenom' => ...
     
    [1]  Array()
     
           'nom' => ..
    etc ..

    Je sais qu'en PHP, il suffirait de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach($tab as $myTab) :
      list($nom)=$myTab;
      echo myTab[$nom];
    J'ai trouvé ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(var i=0; i< tab.personnes.length; i++) {
        alert(tab.personnes[i].nom);					
    }
    Mais j'aurai aimé plutôt que d'utiliser le nom moi même, une clé.

    J'ai vu qu'il existait le moyen : for(key in tab.personnes) , sauf qu'après il y aura le soucis des index

    Une petite solution ?

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Bonsoir,

    les tableaux de JS ne sont pas associatifs comme ceux de PHP. Pour reproduire le même mécanisme, il faut utiliser de simples objets.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var personne = {
      nom: "Cornichon",
      prenom: "Jean-Pierre"
    };
    Si j'ai bien saisi, tu as un tableau de personnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var tab = [
      { nom: "Fétu", prenom: "Nicole" },
      { nom: "Leblanc", prenom: "François" },
      { nom: "Poulpe", prenom: "Rachelle" }
    ];
    Ainsi tab[0] te renvoie la personne Nicole Fétu, et tab[0].prenom renvoie la chaîne "Nicole".

    Si tu veux utiliser une boucle for/in, tu peux le faire sans danger (*) car tu utilises des objets et non pas des tableaux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (var i = 0; i < tab.length; i++) {
      for (var key in tab[i]) {
        console.debug(tab[i][key]);
      }
    }
    J'ai remplacé alert par console.debug, tu verras c'est plus pratique. Pour ouvrir la console, ça dépend du navigateur, essaye F12 ou Ctrl+Maj+I ou Ctrl+Alt+I.



    (*) Sans danger à condition que personne n'ait eu la mauvaise idée d'ajouter des trucs sur le prototype de Object. Si c'est le cas, c'est encore faisable mais ça t'oblige à utiliser hasOwnProperty :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (var key in tab[i]) {
      if (tab[i].hasOwnProperty(key)) {
        console.debug(tab[i][key]);
      }
    }
    Je reconnais que c'est un peu le côté sordide de JavaScript. Et c'est pour le même genre de raison que c'est déconseillé d'utiliser for/in pour itérer sur un tableau.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Invité
    Invité(e)
    Par défaut
    C'est nickel je te remercie

  4. #4
    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 : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Si disponible, tu peux aussi utiliser Array.foreach().
    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

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/03/2013, 14h03
  2. Réponses: 10
    Dernier message: 07/12/2006, 20h52
  3. [perl]Problème tableau indexé
    Par LE NEINDRE dans le forum Langage
    Réponses: 8
    Dernier message: 25/08/2005, 21h24
  4. [Debutant][Tableau] Tableau indexé sur chaine de caractères
    Par SamRay1024 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 07/05/2004, 11h14
  5. Tableau à index négatif
    Par karl3i dans le forum C
    Réponses: 14
    Dernier message: 23/10/2003, 17h17

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