Перенос элементов из JSON во вложенный массив [i] [pu sh здесь] - PullRequest
0 голосов
/ 11 января 2020

У меня есть 2 файла: index. js и list. json

Я хочу взять элемент из списка. json и добавить его во вложенный массив, используя следующую структуру: [час] [посещений в час]

час указывает на индекс часа, поэтому для примера: час 12 на самом деле индекс 12. Проблема в том, что я получаю неопределенные теги в консоли. Я опубликую его внизу, чтобы показать вам, что я имею в виду.

Вот выдержка из файла json, всего 28 строк:

[
  { "time":"01:34:19", "visits": 37 },
  { "time":"02:03:21", "visits": 42 },
  { "time":"02:22:35", "visits": 51 },
  { "time":"02:43:54", "visits": 31 },
  { "time":"03:31:43", "visits": 24 },
  { "time":"03:38:01", "visits": 27 },
  { "time":"05:29:57", "visits": 36 },
  { "time":"05:54:08", "visits": 47 },
  { "time":"06:11:17", "visits": 49 },
  { "time":"07:22:03", "visits": 51 },
  { "time":"07:27:09", "visits": 55 },
]

Вот Javascript попытка:

let json = require('./list.json');

let visitsPerHr = [];
visitsPerHr.length = 24;

//I had to do this to avoid a type error in the 2nd loop
for (let x = 0; x < 24; x++) {
    visitsPerHr[x] = x;
}

let hour = -1;
let visitCount = -1;

for(let i = 0; i < json.length; i++){

    //get hour & parse
    hour = json[i].time[0] + json[i].time[1];
    hour = parseInt(hour, 10);

    //get visits and parse
    visitCount = json[i].visits;
    visitCount = parseInt(visitCount, 10);

    //push to the hour(index) the number of visits, later i need to reorder 
    //the visits based on highest amount if multiple ones exist within that hour.

    visitsPerHr[hour].push = visitCount;

}

Мне нужна помощь, чтобы перенести количество посещений на соответствующий час (индекс.) Так что после зацикливания каждого индекса (часы начинаются с 1 до 23, я смогу получить все посещения за этот индекс.

Пример результата, который я ищу в течение часа 7: [7] [27,29,22]

вот мой текущий результат:

2
undefined
2
undefined
2
undefined
2
undefined
5
undefined
6
undefined
6
undefined
6
undefined
6
undefined
7
undefined
7
undefined
7
undefined
7
undefined
7
undefined
8
undefined
9
undefined
10

и так далее до 23

1 Ответ

0 голосов
/ 12 января 2020
const json = require('./list.json');
const visitsPerHour = {0:0,1:0,2:0,3:0,4:0 ... 23:0};
for (let element of json) {
    visitsPerHour[(new Date(element.time)).getHours()] += element.visits;
}
...