Je ne peux pas utiliser la valeur de l'élément dans la fonction forEach ()

var filtered = rawData.map(function(x){
        return {
          state       : x.state,
          active      : x.active,
          deaths      : x.deaths,
          recovered   : x.recovered
        };
})

En utilisant ce qui précède dans la boucle suivante:

for(i=1; i<=filtered.length; i++){
        let tr = document.createElement("tr");
        tr.setAttribute("align","center");    
        document.querySelector('tbody').appendChild(tr);

        ndata = ['state', 'active', 'deaths', 'recovered']
        ndata.forEach((el, k) => {
          let td$k = document.createElement('td');
          td$k.innerText = filtered[i].$el;        // <-- ERROR //
          tr.appendChild(td$k);
        }); 

Le navigateur renvoie cette erreur: app.js: 201 Uncaught TypeError: Cannot read property '$ el' of undefined

-1
Karan Kumar 18 avril 2020 à 16:10

2 réponses

Meilleure réponse

Nous pouvons accéder aux propriétés d'un objet en utilisant la notation par points ou la notation entre crochets comme:

object.property
object['property']

Mais ici el n'est pas une propriété sur l'objet filtered[i]. C'est la valeur clé sous forme de chaîne, nous devons donc utiliser la notation entre crochets comme:

td$k.innerText = filtered[i][el];

Pour plus d'informations, consultez la documentation sur Property Accessors .

0
palaѕн 18 avril 2020 à 13:29

Il me manque peut-être quelque chose, mais cela a fonctionné pour moi d'appeler la valeur de manière dynamique ... J'ai également dû démarrer la boucle à i = 0 (au lieu de i = 1 ci-dessus).

ndata = ['state', 'active', 'deaths', 'recovered']
            ndata.forEach((el, k) => {
                let td$k = document.createElement('td');
                td$k.innerText = filtered[i][el];       
                tr.appendChild(td$k);
            });
1
vtchris 18 avril 2020 à 13:43