JavaScriptの連想配列で、複数のキーでグルーピングし、数値を合計値にする方法

複数のキーでグルーピング(まとめる) JavaScript
この記事は約2分で読めます。

この記事の最終更新日: 2023年2月1日

日付、時間、曜日での3つのキーでグルーピングし(まとめて)、countをの数値は合計値に変更するコードです。

reduceメソッドを使用します。

const data = [
  { date: '2023-01-01', hour: 10, week_name: 'Monday', count: 100 },
  { date: '2023-01-01', hour: 11, week_name: 'Monday', count: 200 },
  { date: '2023-01-02', hour: 10, week_name: 'Tuesday', count: 150 },
  { date: '2023-01-03', hour: 11, week_name: 'Wednesday', count: 75 }
];

const groupedData = data.reduce((acc, item) => {
  const key = `${item.date}-${item.hour}-${item.week_name}`;
  if (!acc[key]) {
    acc[key] = { date: item.date, hour: item.hour, week_name: item.week_name, count: 0 };
  }
  acc[key].count += item.count;
  return acc;
}, {});

console.log(Object.values(groupedData));

出力結果

[
  { date: '2023-01-01', hour: 10, week_name: 'Monday', count: 100 },
  { date: '2023-01-01', hour: 11, week_name: 'Monday', count: 200 },
  { date: '2023-01-02', hour: 10, week_name: 'Tuesday', count: 150 },
  { date: '2023-01-03', hour: 11, week_name: 'Wednesday', count: 75 }
]

コメント

タイトルとURLをコピーしました