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 :

Déclaration de tableau d'objets


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 94
    Par défaut Déclaration de tableau d'objets
    Bonjour,
    Je voudrais déclarer un tableau (famille) d'objets (fam) en javascript et remplir les données de ces objets par une boucle à partir d'un tableau (cont), les données sont séparées par un ; dans le tabeau initial :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var cont=[];
    var famille=[];
    var fam=new Object();
    ................................................
    ................................................
      for (var i=0; i<cont.length; i++) {
        fam.nom=cont[i].split(';')[0];
        fam.ind=cont[i].split(';')[1];
        fam.exp=cont[i].split(';')[2];
        fam.photo=cont[i].split(';')[3];
        famille.push(fam);
        //ou famille[i]=fam;
    }
    En faisant cela, je ne récupère dans famille que le dernier objet de la boucle, surement un problème de déclaration de tableau. En fait, je n'ai trouvé nul part une doc claire de tableau d'objets Curieux, non ? Quelqu'un peut m'aider ?
    Merci

  2. #2
    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
    Citation Envoyé par tim1789 Voir le message
    Quelqu'un peut m'aider ?
    Ben, pour le moment non, parce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var cont=['0;1;2;3','4;5;6;7','8;9;10;11'];
    var famille=[];
    var fam=new Object();
      for (var i=0; i<cont.length; i++) {
        fam.nom=cont[i].split(';')[0];
        fam.ind=cont[i].split(';')[1];
        fam.exp=cont[i].split(';')[2];
        fam.photo=cont[i].split(';')[3];
        famille.push(fam);
        //ou famille[i]=fam;
    }
    alert(famille)
    renvoie bien le résultat attendu, donc ton problème vient de ce que tu ne nous montres pas :
    ................................................
    ................................................
    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

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 94
    Par défaut
    Voici plus précisément ce que je cherche à faire :
    Le fichier d'entrée est une chaine dont les blocs de données sont séparés, ici par des /, chaque bloc comportant 4 sous données séparées par des points virgules, comme sur l'exemple ci dessous

    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
     
    var fichier='0;1;2;3/4;5;6;7/8;9;10;11';
    var famille=[];
    var cont=fichier.split('/');
    var fam=new Object();
     
      for (var i=0; i<cont.length; i++) {
        fam.nom=cont[i].split(';')[0];
        fam.ind=cont[i].split(';')[1];
        fam.exp=cont[i].split(';')[2];
        fam.photo=cont[i].split(';')[3];
        famille.push(fam);
        //ou famille[i]=fam;
    }
    x=famille[1];
    alert('famille : '+famille+'     fam.nom : '+x.nom)
    Comme résultat, j'obtiens bien 3 objets dans le message d'alerte mais je m'attends à trouver 4 pour fam.nom (le premier élément du second bloc), en fait, je trouve 8, le premier élément du dernier bloc !
    Je n'ai mémorisé que le dernier objet, d'où ma question.

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Par défaut
    Citation Envoyé par tim1789 Voir le message
    Voici plus précisément ce que je cherche à faire :
    Le fichier d'entrée est une chaine dont les blocs de données sont séparés, ici par des /, chaque bloc comportant 4 sous données séparées par des points virgules, comme sur l'exemple ci dessous

    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
     
    var fichier='0;1;2;3/4;5;6;7/8;9;10;11';
    var famille=[];
    var cont=fichier.split('/');
     
      for (var i=0; i<cont.length; i++) {
        fam.nom=cont[i].split(';')[0];
        fam.ind=cont[i].split(';')[1];
        fam.exp=cont[i].split(';')[2];
        fam.photo=cont[i].split(';')[3];
        famille.push(fam);
        //ou famille[i]=fam;
    }
    x=famille[1];
    alert('famille : '+famille+'     fam.nom : '+x.nom)
    Comme résultat, j'obtiens bien 3 objets dans le message d'alerte mais je m'attends à trouver 4 pour fam.nom (le premier élément du second bloc), en fait, je trouve 8, le premier élément du dernier bloc !
    Je n'ai mémorisé que le dernier objet, d'où ma question.
    Ben dans ta boucle tu ne fais que modifier et toujours modifier le même objet fam.
    si tu faisait ton fam = new Object(); dans la boucle for, ça marcherait mieux

    et plus simple :
    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
    var fichier='0;1;2;3/4;5;6;7/8;9;10;11';
    var famille=[];
    var cont=fichier.split('/');
    var fam=new Object();
     
      for (var i=0; i<cont.length; i++) {
          var a = cont[i].split(';');
          famille.push({
              nom:a[0],
              ind:a[1],
              exp:a[2],
              photo:a[3]
          });
    }
    x=famille[1];
    document.write('famille : '+famille+'     fam.nom : '+x.nom)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 94
    Par défaut
    C'est vrai que ça marche beaucoup mieux !
    Merci

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

Discussions similaires

  1. Déclaration d'un tableau d'objets
    Par ChPr dans le forum Langage
    Réponses: 8
    Dernier message: 13/08/2014, 13h38
  2. Tableau d'objets
    Par moulefrite dans le forum MFC
    Réponses: 7
    Dernier message: 15/06/2004, 14h14
  3. Sauvegarde / Chargement d'un tableau d'objets
    Par Naruto dans le forum Langage
    Réponses: 3
    Dernier message: 18/05/2004, 14h34
  4. [VB6]Tableau d'objet withevents
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 13/02/2004, 19h44
  5. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

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