Problème de map sur un array

Problème de map sur un array - Javascript/Node.js - Programmation

Marsh Posté le 27-02-2019 à 17:46:24    

Bonjour,

 

Je ne comprends pas, je n'arrive pas à mapper mon array (variable globale), je me retrouve à chaque fois avec un tableau vide en sortie.
J'essaye juste de me créer une vue de ma liste de films, ma variable myGlobalDatas contient des objets (un objet = film et ses propriétés).

 
Code :
  1. console.log(myGlobalDatas); //array d'objets (length > 1)
  2.     let mytab = myGlobalDatas.map(function(film) {
  3.      let line = document.createElement('tr');
  4.      let td = [];
  5.      for(let i = 0; i < 5; i++) {
  6.       td.push(document.createElement('td'));
  7.      }
  8.      let img = document.createElement('img');
  9.      img.setAttribute('src', film.image);
  10.      td[0].textContent = film.fichier;
  11.      td[1].appendChild(img);
  12.      td[2].textContent = film.note;
  13.      td[3].textContent = film.genre;
  14.      td[4].textContent = film.annee;
  15.      for(let el of td) {
  16.       line.appendChild(el);
  17.      }
  18.      return line;
  19.     });
  20.     console.log(mytab); //array vide
 

Mais même le code suivant me retourne un array vide :

Code :
  1. console.log(myGlobalDatas); //array d'objets (length > 1)
  2.    let mytab = myGlobalDatas.map(function(film) {
  3.     return 0;
  4.    });
  5.    console.log(mytab); //array vide
 

Une idée ?

 

Merci.


Message édité par MaybeEijOrNot le 27-02-2019 à 17:49:15

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 27-02-2019 à 17:46:24   

Reply

Marsh Posté le 27-02-2019 à 18:37:44    

Bon je suis rentré chez moi, et j'ai testé ceci :

 
Code :
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.    <meta charset="UTF-8">
  5.    <title>Page d'essai</title>
  6.    <style type="text/css">
  7.    </style>
  8.    <script type="text/javascript">
  9.       myGlobalDatas = [];
  10.       function jawascript() {
  11.          let table = document.createElement('table');
  12.          let tr = document.createElement('tr');
  13.          let th1 = document.createElement('th');
  14.          let th2 = document.createElement('th');
  15.          th1.textContent = "Zero";
  16.          th2.textContent = "Un";
  17.          tr.appendChild(th1);
  18.          tr.appendChild(th2);
  19.          table.appendChild(tr);
  20.          myGlobalDatas.push({'zero': '0a', 'un': '1a'}, {'zero': '0b', 'un': '1b'}, {'zero': '0c', 'un': '1c'});
  21.          console.log(myGlobalDatas);
  22.          let mytab = myGlobalDatas.map(function(film) {
  23.             let line = document.createElement('tr');
  24.             let td = [];
  25.             for(let i = 0; i < 2; i++) {
  26.                td.push(document.createElement('td'));
  27.             }
  28.             td[0].textContent = film.zero;
  29.             td[1].textContent = film.un;
  30.             for(let el of td) {
  31.                line.appendChild(el);
  32.             }
  33.             return line;
  34.          });
  35.          console.log(mytab);
  36.          for(let line of mytab) {
  37.             table.appendChild(line);
  38.          }
  39.          document.body.appendChild(table);
  40.          }
  41.    </script>
  42. </head>
  43. <body onLoad="jawascript();">
  44. </body>
  45. </html>
 

Cela fonctionne, va falloir que j'approfondisse cette histoire...


Message édité par MaybeEijOrNot le 27-02-2019 à 18:38:47

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 28-02-2019 à 09:27:49    

Bon ça venait de moi et de la console Web.
En modifiant mon code, je n'avais pas encore rempli ma variable globale avec mes données. J'avais oublié de décaler cette ligne... Néanmoins la console affichait quand même son contenu qui se chargeait après...


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed