Partage
  • Partager sur Facebook
  • Partager sur Twitter

Extraire un tableau dans une boucle FOR

Extraire les données d'un tableau a chaque itération d'une boucle FOR

    11 janvier 2019 à 14:35:21

    Bonjour à vous,

    Je sèche sur un petit pb de code.. Je dois manquer d'expérience. Et après plusieurs heures de recherche sur la toile je n'ai toujours pas trouvé de réponse à ma solution.

    Je dev un petit bout de code qui me pose pb :

            for (var i = 0; i < lvl_collecte; i++) {
                for (var x = 0; x < archer_world - 1; x++) {
                    tabSend[x].send = 0;
                }
                console.log("Niveau :", tabScavenge[i].id);
                for (j = 0; j < archer_world - 1; j++) {
                    while (tabScavenge[i].quantity > 0 && tabunits[j].number > 0) {
                        tabScavenge[i].quantity -= tabunits[j].carry;
                        tabunits[j].number--;
                        tabSend[j].send++;
                    };
                }
                tabTotalSend[i].valeur = tabSend;
    
    
                console.log(tabSend);
                console.table(tabSend);
    
    
    
            }
            return tabTotalSend;

    Tout cela est dans un fonction qui return tabTotalSend (un array)

    Mon tableau retourne la dernière valeur de l'itération.. pour une raison que je n'explique pas.. 
    Et ce qui est le plus étrange, c'est qu'après certains tests qd je souhaite afficher tabSend (qui donc est un tableau qui vient s'inclure dans les valeurs de mon tableau tabTotalSend) et bien le console.table me renvoit bien les valeurs a chaque itérations de la boucle mais le console.log ne me renvoit que la valeur de la dernière itération.

    Aussi moi je souhaiterai que mon tableau total (tabTotalSend) s'incrémente bien de toutes les valeurs du tableau d'envoi (tabSend) à chaque itération de la boucle..

    Pas évident à expliquer, mais j'espère que vous aurez compris..

    Je pose aussi une capture d'écran de mon résultat dans la console :

    Rendu de la console

    Merci d'avance :)

    • Partager sur Facebook
    • Partager sur Twitter
      12 janvier 2019 à 16:19:43

      Salut, tu peux essayer de reproduire sur JSFiddle et nous copier le liens, sans données, et voir l'algo comme ça c'est assez compliqué mais si tu arrive à reproduire sur https://jsfiddle.net/ je pourrais t'aider mais comme ça, je ne vois pas ce qui cloche ;)

      -
      Edité par fasteel 12 janvier 2019 à 16:20:09

      • Partager sur Facebook
      • Partager sur Twitter
        14 janvier 2019 à 12:21:01

        Coucou Fasteel, désolé je n'étais pas dispo du weekend. 

        Ci-joint le JSFiddle de mon script + du HTML  :

        https://jsfiddle.net/aL8nxrk4/

        Tout se passe dans la console, pense bien a relancer le script une fois la console ouverte pour voir les console.table

        Je cherche a implémenter chaque tableaux dans le résultat de mon tableau final  tabTotalSend. Si tu trouves une solution je suis preneur 

        Merci d'avance :)

        -
        Edité par smilecry 14 janvier 2019 à 12:21:33

        • Partager sur Facebook
        • Partager sur Twitter
          15 janvier 2019 à 14:26:26

          Coucou tout le monde,

          Je lâche pas l'affaire et je ne désespère pas que quelqu'un me trouve une réponse ^^ J'ai un peu avancé et je pense savoir d'où vient mon pb.. 

          Regardez sur la console de ce Jsfiddle : 

          https://jsfiddle.net/6jxwt2n0/2/

          Le console.table renvoi bien les bonnes valeurs mais le array qui est relié renvoi les valeurs de la dernière itération de la boucle for ! Pourquoi ?  Je ne comprends pas du tout la logique..

          Si jamais vous êtes en mesure de m'apporter un éclairage sur ce point que je ne maitrise pas, je vous en serais très reconnaissant. 

          -
          Edité par smilecry 15 janvier 2019 à 14:31:28

          • Partager sur Facebook
          • Partager sur Twitter
            15 janvier 2019 à 15:45:51

            Bonjour,

            tu veux un truc comme ça ? https://jsfiddle.net/cbx68rav/5/

            console.log est asynchrone, tu remplis ton tableau et tu fais bien un console.log pour chaque itération mais tu console.log un array. A savoir qu'en js, les variables contenant les array et les objets font référence à l'emplacement de l'objet dans la mémoire (c'est pour ça que {} === {} revoie false). Donc lorsque tu console.log un array ou un objet, la console vas aller chercher l'objet en mémoire, et comme cet objet est déjà remplis, il l'affiche tel quel.

            • Partager sur Facebook
            • Partager sur Twitter
              15 janvier 2019 à 19:26:22

              Donc console.log est asynchrone et console.table ne l'est pas ? Par contre sur la doc de MSDN, j'ai un peu de mal à comprendre "mais est la valeur de l'objet au moment où vous cliquez dessus." ils entendent quoi pas cliquez dessus parce que je vois pas comment on peux cliquer un objet ><

              Notez que si vous consignez des objets dans les dernières versions de Chrome et Firefox, ce que vous avez enregistré sur la console est une référence à l'objet, qui n'est pas nécessairement la «valeur» de l'objet au moment où vous appelez la console.log (), mais est la valeur de l'objet au moment où vous cliquez dessus.

              • Partager sur Facebook
              • Partager sur Twitter
                16 janvier 2019 à 11:47:21

                Je ne sais pas si tu as compris tout seul où pas, je vais essayer d'expliquer avec des termes simples. En js, tout ce qui est objet ou tableau est stocké en mémoire. Toutes les variables de type objet ou tableau ne contiennent pas un objet ou un tableau mais une référence à l'objet ou le tableau qui est en mémoire. Je ne sais pas comment marche console.table, je ne m'y suis jamais intéressé. Console.log n'est pas vraiment asynchrone, mais il ne vas pas afficher l'objet ou le tableau au moment où la ligne est exécutée, il vas afficher un lien vers la référence de l'objet ou du tableau, et quand tu déplie l'objet ou le tableau, il l'affiche tel qu'il est à l'instant où tu le déplie (c'est à dire une fois que le reste du code a été exécuté).

                • Partager sur Facebook
                • Partager sur Twitter
                  16 janvier 2019 à 12:56:40

                  Oui c'est très clair, et j'avais aussi compris le fonctionnement avant ton dernier commentaire c'est juste que pour moi, en tout cas la doc de msdn est assez "bancale".
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Extraire un tableau dans une boucle FOR

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown