Вложенные JSON массивы и циклы FOR - PullRequest
0 голосов
/ 12 апреля 2020

Для двух первых объектов, провинции и округа, я получаю правильный ответ, а для вложенных - неопределенный. кто-нибудь может помочь?

var data =  [
  {
    "province": "massachusetts",
    "county": "barnstable",
    "timeline": {
      "cases": {
        "3/13/20": 0,
        "3/14/20": 1,
        "3/15/20": 1
      },
      "deaths": {
        "3/13/20": 0,
        "3/14/20": 0,
        "3/15/20": 0
       
      }
    }
  }
]
var counties ="";
                for (i in data) {
                    counties += "<h2>" + data[i].province + "</h2>";
                    counties += "<h3>" + data[i].county + "</h3>";
                    for (j in data[i].timeline) {
                        counties += "<h4>" + data[i].timeline[j] + "</h4>";
                        for (z in data[i].timeline[j]) {
                            counties += "<p>" + data[i].timeline[j].case + "</p>";
                            counties += "<p>" + data[i].timeline[j].deaths + "</p>";
                        }
                    }
                }
console.log(counties);

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

Учитывая мой комментарий к вашему вопросу, вы можете сделать что-то следующим образом. Это имеет некоторые ограничения (повторяется только на cases, ключ cases должен существовать в deaths)

var data =  [
  {
    "province": "massachusetts",
    "county": "barnstable",
    "timeline": {
      "cases": {
        "3/13/20": 0,
        "3/14/20": 1,
        "3/15/20": 1
      },
      "deaths": {
        "3/13/20": 0,
        "3/14/20": 0,
        "3/15/20": 0
       
      }
    }
  }
]
var counties ="";
                for (i in data) {
                    counties += `<h2>${data[i].province}</h2>`;
                    counties += `<h3>${data[i].county}</h3>`;
                    for (let [date, caseCount] of Object.entries(data[i].timeline.cases)) {
                        counties += `<p>${caseCount}</p>`;
                        counties += `<p>${data[i].timeline.deaths[date]}</p>`;
                    }
                }
console.log(counties);
0 голосов
/ 12 апреля 2020

Я просмотрел ваш код и прокомментировал каждый шаг:

    var data =  [
      {
        "province": "massachusetts",
        "county": "barnstable",
        "timeline": {
          "cases": {
            "3/13/20": 0,
            "3/14/20": 1,
            "3/15/20": 1
          },
          "deaths": {
            "3/13/20": 0,
            "3/14/20": 0,
            "3/15/20": 0
          }
        }
      }
    ]
    var counties ="";

    // Iterate through data entries
    for (i in data) {
        counties += "<h2>" + data[i].province + "</h2>";
        counties += "<h3>" + data[i].county + "</h3>";

        // Iterate through timeline properties ("cases" and "deaths")
        for (j in data[i].timeline) {
            counties += "<h4>" + JSON.stringify(data[i].timeline[j]) + "</h4>";

            // Iterate through cases and deaths properties
            for (z in data[i].timeline[j]) {
                counties += "<p>" + data[i].timeline[j][z] + "</p>";
            }
        }
    }
    console.log(counties);
...