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 :

Parcourir un tableau associatif avec forEach


Sujet :

JavaScript

Vue hybride

alex8276 Parcourir un tableau... 08/11/2019, 01h07
Beginner. Salut, Certains ne sont... 08/11/2019, 01h38
NoSmoking Bonjour, montre nous comment... 08/11/2019, 09h26
alex8276 Bonjour Beginner, merci... 08/11/2019, 10h07
Invité Bonjour, Ça me parait... 10/11/2019, 16h03
psychadelic difficile de te donner une... 08/11/2019, 15h09
alex8276 Bonjour, Merxi pour ta... 09/11/2019, 16h45
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 278
    Par défaut Parcourir un tableau associatif avec forEach
    Bonjour a tous,

    j'ai un soucis avec un forEach.
    J'ai un tableau associatif date[2018].
    lorsque je veux le parcourir il ne parcours pas a partir du début. Les clés sont 01, 02, 03 ... 10, 11,12 (ce sont les mois de l'année). Le foreach ne parcours pas les clé commençant par 0. Il commence a 10.
    Comment cela se fait il ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    date[2018].forEach((value, key) => {
           tab.push(value);
       });
    merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,

    Certains ne sont pas d'accord avec l'expression "tableau associatif"...

    En JS la boucle forEach fonctionne avec les tableaux : https://developer.mozilla.org/fr/doc.../Array/forEach ou les NodeList : https://developer.mozilla.org/fr/doc...deList/forEach...

    Pour les objets il y a plusieurs possibilités, exemple la boucle for...in : https://developer.mozilla.org/fr/doc...tions/for...in...

    Autre possibilité (Object.entries() avec une boucle for...of ) : https://developer.mozilla.org/fr/doc...Object/entries

    Si tu tiens à utiliser la boucle forEach c'est possible avec Object.keys() : https://gomakethings.com/the-es6-way...lla-javascript

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    montre nous comment est déclaré ton « tableau associatif ».

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 278
    Par défaut
    Bonjour Beginner,

    merci pour ton retour, je vais regarder tout ça !

    NoSmoking: j'ai fais un new Array(),
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    month = item.get("date").split("-");
                if(date[month[0]] === undefined) {
                    date[month[0]] = new Array();
                }
                date[month[0]][month[1]] = item.get('distance');
    EDIT:
    Bon j'ai peut etre trouvé un moyen. Je fais un parseInt(month[1]) pour retirer les 0

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par alex8276 Voir le message
    Bon j'ai peut etre trouvé un moyen. Je fais un parseInt(month[1]) pour retirer les 0
    Ça me parait effectivement la solution la plus simple.

  6. #6
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    difficile de te donner une réponse précise tant que tu refuse de nous donner la structure de date[2018] .

    Citation Envoyé par NoSmoking Voir le message
    montre nous comment est déclaré ton « tableau associatif ».
    et ta réponse est vraiment incomplète de ce point de vue.

    Sinon ça devrait pouvoir se résoudre par un simple tri
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    date[2018]
      .sort((a, b) => a.localeCompare(b))
      .forEach( val => tab.push(val) );

  7. #7
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 278
    Par défaut
    Bonjour,
    Merxi pour ta réponse.
    Je ne refuse rien...
    Dans mon tableau tab[2018] j'ai une clé par mois {01:1000,02:2500,....,11:2388, 12:6587}

    J'ai pas accès à mon pc ce week-end. Je testerai ta solution lundi !
    Merci encore

  8. #8
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    cette description de données ne correspond pas au premier post, car dans ce cas la, ton code renvoit une erreur date[2018].forEach is not a function

    Partant de la description de ton denier post voici une solution possible:
    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
    23
    24
    let date= [];
     
    date[2018]=
          { '01': 1000
          , '07': 7777
          , '03': 3333
          , '12': 6587
          , '10': 1010  
          , '05': 5555
          , '06': 6666
          , '04': 4444
          , '08': 8888
          , '09': 9999
          , '02': 2500
          , '11': 2388
          };
     
    let tab = Object
                .keys(date[2018])
                .sort((a,b)=>Number(a)-Number(b))
                .map(k=>date[2018][k])
                ;
     
    console.log( tab );
    ce qui donne comme résultat :
    tab = [ 1000, 2500, 3333, 4444, 5555, 6666, 7777, 8888, 9999, 1010, 2388, 6587 ]

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

Discussions similaires

  1. [PDO] Boucle foreach() sur un tableau associatif avec référence pour lier des paramètres
    Par Samy-DT dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 30/09/2015, 14h46
  2. [Tableaux] Tableau associatif avec des array
    Par Piccolo_son dans le forum Langage
    Réponses: 6
    Dernier message: 18/12/2007, 08h23
  3. Réponses: 2
    Dernier message: 20/10/2006, 10h25
  4. [Tableaux] tableau associatif avec select
    Par jive dans le forum Langage
    Réponses: 2
    Dernier message: 22/09/2006, 19h45
  5. [Tableaux] Tableau associatif et foreach()...
    Par Julien.alkaza dans le forum Langage
    Réponses: 2
    Dernier message: 13/05/2006, 15h14

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