Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème tableau JS et format JSON

    4 décembre 2018 à 15:46:15

    Bonjour à Tous,

    Débutant en JS et peu à l'aise avec la syntaxe (pour faire dans l'euphémisme..), j'ai un problème pour extraire des datas JS vers JSON.

    Je m'explique:

    J'ai un tableau dans ma page HTML:

    tableau

    Mon script.js:

    var quantite= this.evaluate(function() {
    
            var lines = document.querySelectorAll("td:nth-child(3):not(:empty)");
            
            var a = Array.prototype.map.call(lines, function(e) {
                return e.textContent.trim();
            });
    
            return JSON.stringify(a.filter(function(e){return e != ''; }));
        });
    
        console.log(quantite);



    Actuellement et grâce à mon script js j'arrive bien à récupérer les datas de la "quantité" en format JSON:

    ["123","456","789","1011","1213","1415","1617","1819"]


    Mais ce que je n'arrive pas à faire c'est de récupérer un JSON de cette sorte (toujours à partir du même tableau):

    {
        "1":{
         "fruits":"bananes",
         "continent":"Afrique",
         "quantité":"123"
        },
        "2":{
         "fruits":"fraises",
         "continent":"Europe",
         "quantité":"456"
        },
        "3":{
         "fruits":"prunes",
         "continent":"Europe",
         "quantité":"789"
        },
        "4":{
         "fruits":"ananas",
         "continent":"Amérique du sud",
         "quantité":"1011"
        },
        "5":{
         "fruits":"abricots",
         "continent":"Europe",
         "quantité":"1213"
        },
        "6":{
         "fruits":"poires",
         "continent":"Europe",
         "quantité":"1415"
        },
       ...etc
    }

    Un grand MERCI à celui ou celle qui pourra m'aiguiller vers une solution. :)

    -
    Edité par sasha034 4 décembre 2018 à 15:52:30

    • Partager sur Facebook
    • Partager sur Twitter

    Au pire tu meurs...

      4 décembre 2018 à 16:27:32

      Bonjour,

      Si e comprends bien ton problème, tu arrive juste à récupérer la quantité et tu veux les autres cases du tableau.

      Si tu sélectionne les td (au lieu des tr), tu pourrais utiliser la méthode element.children qui te renvoie tous les enfants de cet élément. Le premier enfant correspondrait au nom du fruit, le second au continent, le troisième la description, et le quatrième au prix. Il te suffit de faire une boucle autour de tout ça et de remplir ton objet.

      function getData() {
       var result = {};
       var els = document.getElementsByTagName('td');
       Object.values(els).forEach((el, i) => {
        result[i] = {};
        Object.values(el.children).forEach((child, j) => {
         switch(j) {
          case 0:
           result[i].fruits = child.textContent.trim();
           break;
          case 1:
           result[i].continent = child.textContent.trim();
           break;
          case 3:
           result[i].quantite = child.textContent.trim();
           break;
          default:
           break;
         }
        }
       })
       return JSON.stringify(result);
      }



      • Partager sur Facebook
      • Partager sur Twitter
        4 décembre 2018 à 17:06:04

        Bonsoir Piero et merci pour ta réponse.

        Je ne comprends pas quand tu dis : "si tu sélectionne les td (au lieu des tr)"

        Je sélectionne déjà les "td":

        var lines = document.querySelectorAll("td:nth-child(3):not(:empty)");


        Qu'est ce que je n'ai pas bien saisi ?:-°


        -
        Edité par sasha034 4 décembre 2018 à 17:09:42

        • Partager sur Facebook
        • Partager sur Twitter

        Au pire tu meurs...

          4 décembre 2018 à 17:46:48

          "td:nth-child(3):not(:empty)" = tu sélectionne le 3e enfant de chaque td qui n'est pas vide (c'est un tr)
          • Partager sur Facebook
          • Partager sur Twitter
            5 décembre 2018 à 10:49:38

            D'accord merci pour l'explication.

            • Partager sur Facebook
            • Partager sur Twitter

            Au pire tu meurs...

            Problème tableau JS et format JSON

            × 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