Попытка разобрать массив 2-d JSON для агрегаций, которые я хочу - PullRequest
0 голосов
/ 20 апреля 2020

В основном я хочу проанализировать этот JSON 2-дневный массив (пример данных снимка ниже), чтобы суммировать все значения для случаев и смертей для каждой даты, включая штаты. Он будет игнорировать столбец состояния и просто складывать случаи и случаи смерти из всех штатов для каждой даты. Я могу сделать это в SQL, сложно в javascript.

В итоге это будет выглядеть так:

массив JSON 2-й, который выглядит следующим образом:

{date: "2020-02-17", totalCases: "7", totalDeaths: "1"}
{date: "2020-02-18", totalCases: "150", totalDeaths: "2"}
{date: "2020-02-19",  totalCases: "210", totalDeaths: "3"}
{date: "2020-02-20",  totalCases: "350", totalDeaths: "7"}

оригинал JSON OBJECT to агрегировать НИЖЕ

138: {date: "2020-02-18", state: "California", fips: "06", cases: "7", deaths: "0"}
139: {date: "2020-02-18", state: "Illinois", fips: "17", cases: "2", deaths: "0"}
140: {date: "2020-02-18", state: "Massachusetts", fips: "25", cases: "1", deaths: "0"}
141: {date: "2020-02-18", state: "Nebraska", fips: "31", cases: "10", deaths: "0"}
142: {date: "2020-02-18", state: "Texas", fips: "48", cases: "2", deaths: "0"}
143: {date: "2020-02-18", state: "Washington", fips: "53", cases: "1", deaths: "0"}
144: {date: "2020-02-18", state: "Wisconsin", fips: "55", cases: "1", deaths: "0"}
145: {date: "2020-02-19", state: "Arizona", fips: "04", cases: "1", deaths: "0"}
146: {date: "2020-02-19", state: "California", fips: "06", cases: "7", deaths: "0"}
147: {date: "2020-02-19", state: "Illinois", fips: "17", cases: "2", deaths: "0"}
148: {date: "2020-02-19", state: "Massachusetts", fips: "25", cases: "1", deaths: "0"}
149: {date: "2020-02-19", state: "Nebraska", fips: "31", cases: "10", deaths: "0"}
150: {date: "2020-02-19", state: "Texas", fips: "48", cases: "2", deaths: "0"}
151: {date: "2020-02-19", state: "Washington", fips: "53", cases: "1", deaths: "0"}
152: {date: "2020-02-19", state: "Wisconsin", fips: "55", cases: "1", deaths: "0"}
153: {date: "2020-02-20", state: "Arizona", fips: "04", cases: "1", deaths: "0"}
154: {date: "2020-02-20", state: "California", fips: "06", cases: "8", deaths: "0"}
155: {date: "2020-02-20", state: "Illinois", fips: "17", cases: "2", deaths: "0"}
156: {date: "2020-02-20", state: "Massachusetts", fips: "25", cases: "1", deaths: "0"}
157: {date: "2020-02-20", state: "Nebraska", fips: "31", cases: "11", deaths: "0"}

1 Ответ

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

Вы можете сделать это, используя reduce.

const records = {
	138: {date: "2020-02-18", state: "California", fips: "06", cases: "7", deaths: "2"},
	139: {date: "2020-02-18", state: "Illinois", fips: "17", cases: "2", deaths: "0"},
	140: {date: "2020-02-18", state: "Massachusetts", fips: "25", cases: "1", deaths: "0"},
	141: {date: "2020-02-18", state: "Nebraska", fips: "31", cases: "10", deaths: "0"},
	142: {date: "2020-02-18", state: "Texas", fips: "48", cases: "2", deaths: "0"},
	143: {date: "2020-02-18", state: "Washington", fips: "53", cases: "1", deaths: "2"},
	144: {date: "2020-02-18", state: "Wisconsin", fips: "55", cases: "1", deaths: "0"},
	145: {date: "2020-02-19", state: "Arizona", fips: "04", cases: "1", deaths: "0"},
	146: {date: "2020-02-19", state: "California", fips: "06", cases: "7", deaths: "0"},
	147: {date: "2020-02-19", state: "Illinois", fips: "17", cases: "2", deaths: "0"},
	148: {date: "2020-02-19", state: "Massachusetts", fips: "25", cases: "1", deaths: "0"},
	149: {date: "2020-02-19", state: "Nebraska", fips: "31", cases: "10", deaths: "0"},
	150: {date: "2020-02-19", state: "Texas", fips: "48", cases: "2", deaths: "0"},
	151: {date: "2020-02-19", state: "Washington", fips: "53", cases: "1", deaths: "0"},
	152: {date: "2020-02-19", state: "Wisconsin", fips: "55", cases: "1", deaths: "0"},
	153: {date: "2020-02-20", state: "Arizona", fips: "04", cases: "1", deaths: "0"},
	154: {date: "2020-02-20", state: "California", fips: "06", cases: "8", deaths: "0"},
	155: {date: "2020-02-20", state: "Illinois", fips: "17", cases: "2", deaths: "0"},
	156: {date: "2020-02-20", state: "Massachusetts", fips: "25", cases: "1", deaths: "0"},
	157: {date: "2020-02-20", state: "Nebraska", fips: "31", cases: "11", deaths: "0"}
};


const res = Object.values(records).reduce((acc, {date, cases, deaths}) => {
	if (acc[date] !== undefined) {
		acc[date].totalCases += (+cases);
		acc[date].totalDeaths += (+deaths);
	} else {
		acc[date] = {date, totalCases: (+cases), totalDeaths: (+deaths)};
	}

	return acc;
}, {});

console.log(res);
.as-console-wrapper {min-height: 100% !important; top: 0;}
...