はじめに
それなりに時間はたったもののJSでgroupByが使えるようになったらしい(前からあったらごめんなさい)
あまり深くは触らないがちょっとだけ触ってみる
構文
Object.groupBy(items, callbackFn)
グループ化したいアイテムと処理を渡したら配列を含むオブジェクトを返してくれるっぽい?
ためしてみる
const reports = [
{ name: "report_A", status: "1", user_id: 1 },
{ name: "report_B", status: "1", user_id: 2 },
{ name: "report_A", status: "2", user_id: 1 },
{ name: "report_A", status: "1", user_id: 2 },
{ name: "report_B", status: "2", user_id: 1 },
];
const result = Object.groupBy(reports, ({ name }) => name);
console.log(result)
これでname単位でのグループ化をしてくれるらしい
もうちょい触ってみる
const reports = [
{ name: "report_A", status: "1", user_id: 1 },
{ name: "report_B", status: "1", user_id: 2 },
{ name: "report_A", status: "2", user_id: 1 },
{ name: "report_A", status: "1", user_id: 2 },
{ name: "report_B", status: "2", user_id: 1 },
];
const result = Object.groupBy(reports, ({ name }) => name);
// console.log(result)
const counts = Object.fromEntries(
Object.entries(result).map(([key, values]) => [key, values.length])
);
console.log(counts)
グループ化したやつからいい感じにグループ化したキーと件数を取得してみる
何に使える?
一覧でデータ取得してる系のところとかだと取得データをフロント側でちょちょいといじって割合のグラフ作ったり、ラジオボタンとかでキーを指定して集計からの再描画とかできそう
データ取得が全件バーンだけでよくなるので何かしらかには使えそうな気がする
参考