Получите сумму всех вхождений в JSON API (большие данные) - PullRequest
0 голосов
/ 29 мая 2020

Есть ли способ получить сумму всех вхождений массива в JSON API? Я новичок в API и программировании и очень хочу этому научиться. Пожалуйста, помогите мне.

Пример: https://endcovidph.com/stats-JSON/DOHDataDrop.json

[
  {
    "CaseCode": "C100018",
    "Age": 53,
    "AgeGroup": "50 to 54",
    "Sex": "Female",
    "DateRepConf": "2020-05-11",
    "DateDied": "",
    "DateRecover": "",
    "RemovalType": "",
    "DateRepRem": "",
    "Admitted": "",
    "RegionRes": "Region IV-A: CALABARZON",
    "ProvRes": "LAGUNA",
    "CityMunRes": "CITY OF SAN PEDRO",
    "CityMuniPSGC": "PH043425000",
    "HealthStatus": "Mild",
    "Quarantined": "",
    "DateOnset": "",
    "Pregnanttab": "",
    "ValidationStatus": ""
  },
  {
    "CaseCode": "C100119",
    "Age": 31,
    "AgeGroup": "30 to 34",
    "Sex": "Male",
    "DateRepConf": "2020-04-12",
    "DateDied": "",
    "DateRecover": "",
    "RemovalType": "Recovered",
    "DateRepRem": "2020-05-11",
    "Admitted": "Yes",
    "RegionRes": "NCR",
    "ProvRes": "METRO MANILA",
    "CityMunRes": "CITY OF PARAÑAQUE",
    "CityMuniPSGC": "PH137604000",
    "HealthStatus": "Recovered",
    "Quarantined": "No",
    "DateOnset": "2020-03-23",
    "Pregnanttab": "",
    "ValidationStatus": ""
  }
]

Этот API содержит 327 350 строк кода. Не могу вставить сюда все.

Чтобы было понятно, мне нужно получить общее количество данных по API. Например, в "ProvRes" у меня есть "LAGUNA" на основе приведенного выше фрагмента кода. Мне нужно узнать, сколько "LAGUNA" было написано в API, получить общее количество и отобразить его как число. Возможно, используя метод document.getElementById(id).innerHTML = (count.toLocaleString());.

Общее количество обращений в Laguna: «Общее количество обращений Laguna здесь»

БОЛЬШОЕ СПАСИБО!

1 Ответ

0 голосов
/ 29 мая 2020

Думаю, приведенный здесь пример кода демонстрирует, что вы пытаетесь сделать.
Скрипт мог бы быть короче, но я сделал его подробным для ясности.

Если вы еще не знаете, JavaScript объекты содержат «свойства». У каждого свойства есть key и value. (Ключ обычно должен быть строкой, но значение может быть любым, включая другой объект.)

Этот сценарий использует collector объект с 3 свойствами, по 1 для каждого типа данные, которые вы считаете. key для каждого свойства соответствует типу данных (например, prs для ProvRes), а value для каждого свойства - это объект, который мы можем рассматривать как содержащий множество «подсвойств».

По мере того, как скрипт просматривает входные данные, он будет смотреть на свойство ProvRes каждого элемента во входных данных.
- Если значение незнакомо, он создаст новое вложенное свойство в объекте prs. key этого подсвойства будет новым (незнакомым) значением, а value подсвойства будет целым числом 1 (что указывает на то, что мы видели это значение 1 раз).
- Если значение знакомо, оно обновит соответствующее вспомогательное свойство , увеличивая значение на 1 (потому что теперь мы видели это значение еще на 1 раз).

Каждый раз через l oop, сценарий обрабатывает ProvRes таким образом, а также обрабатывает CityMunRes и CityMuniPSGC. (Если одно из этих 3 свойств отсутствует в элементе в массиве входных данных, JavaScript будет использовать значение undefined, что можно увидеть, если запустить сценарий во фрагменте.)

// Makes demo input data
const dataArray = [
  { "ProvRes": "A", "CityMunRes": "1", "CityMuniPSGC": "#" },
  { "ProvRes": "A", "CityMunRes": "1", "CityMuniPSGC": "#" },
  { "ProvRes": "B", "CityMunRes": "2", "CityMuniPSGC": "$" },
  { "ProvRes": "A", "CityMunRes": "2", "CityMuniPSGC": "$" },
  { "ProvRes": "C", "CityMunRes": "3", "CityMuniPSGC": "%" },
  { "CityMunRes": "4", "CityMuniPSGC": "%" } // No "ProvRes" - treated as `undefined`
];

// Makes a collector object to count occurences of each value
const collector = {
  prs: {},
  cmrs: {},
  cmpsgcs: {}
};

// Loops through all the items in the input data array
for (let item of dataArray){
  
  // Makes a short name for each significant property of the current item
  let pr = item.ProvRes;
  let cmr = item.CityMunRes;
  let cmpsgc = item.CityMuniPSGC;

  // If the current value exists as a key in collector.prs, increments the count
  if(collector.prs[pr]){ collector.prs[pr] += 1; }
  // Otherwise, creates the key and starts the count at 1
  else{ collector.prs[pr] = 1 }

  // Same as above, but for collector.cmrs
  if(collector.cmrs[cmr]){ collector.cmrs[cmr] += 1; }
  else{ collector.cmrs[cmr] = 1 }
  
  // Same as above, but for collector.cmpsgcs
  if(collector.cmpsgcs[cmpsgc]){ collector.cmpsgcs[cmpsgc] += 1; }
  else{ collector.cmpsgcs[cmpsgc] = 1 }
} // This is the end of the for loop

// Displays the finished collection in the browser console
console.log(collector);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...