4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめに

それなりに時間はたったものの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単位でのグループ化をしてくれるらしい

image.png

もうちょい触ってみる

    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)

グループ化したやつからいい感じにグループ化したキーと件数を取得してみる

image.png

何に使える?

一覧でデータ取得してる系のところとかだと取得データをフロント側でちょちょいといじって割合のグラフ作ったり、ラジオボタンとかでキーを指定して集計からの再描画とかできそう

データ取得が全件バーンだけでよくなるので何かしらかには使えそうな気がする

参考

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?