Сложение значений повторяющихся ключей в массиве объектов

Есть массив с объектами, внутри статистика по провинциям/областям о зараженных, погибших и выздоровевших от коронавируса, необходимо суммировать эту информацию по каждой стране в целом, поместить её в новый массив объектов или объект, где будет: название страны(countryRegion), количество заболевших(confirmed), погибших(deaths) и выздоровевших(recovered). Не знаю как перебрать массив так, чтобы все это суммировать :(

API: https://covid19.mathdro.id/api/confirmed

Массив


Ответы (1 шт):

Автор решения: vsemozhetbyt

Вы можете использовать Array.reduce():

const data = [
  { countryRegion: 'Foo', confirmed: 2, deaths: 1, recovered: 1 },
  { countryRegion: 'Bar', confirmed: 3, deaths: 1, recovered: 2 },
  { countryRegion: 'Foo', confirmed: 2, deaths: 1, recovered: 1 },
  { countryRegion: 'Bar', confirmed: 3, deaths: 1, recovered: 2 },
];

const summed = data.reduce((acc, record) => {
  const { countryRegion, confirmed, deaths, recovered } = record;

  if (!acc[countryRegion]) acc[countryRegion] = { confirmed: 0, deaths: 0, recovered: 0 };

  acc[countryRegion].confirmed += confirmed;
  acc[countryRegion].deaths += deaths;
  acc[countryRegion].recovered += recovered;

  return acc;
}, {});

console.log(summed);

Результат:

{
  Foo: { confirmed: 4, deaths: 2, recovered: 2 },
  Bar: { confirmed: 6, deaths: 2, recovered: 4 }
}
→ Ссылка