JavaScript:ネストされた配列をグループ化する方法

Eyal Abadi

ReactNativeのSectionListを使用してデータを表示しようとしています。私が達成しようとしていることを表示する以下のコードを書きました。

最初にデータをでグループ化するdate必要があり、その日付内で、場所でグループ化する必要があります。通常のJavaScriptソリューションが機能します。キーtitledataキーがあることが重要です

私の入力データは次の形式です:

[ { game_id: 1171,
    date: '2018-11-17',
    location: 'Plaza'
   },
  { game_id: 1189,
    date: '2018-11-17',
    location: 'Field - Kickball'
   },
   { game_id: 1489,
    date: '2018-11-16',
    location: 'Field - Kickball'
   },
   { game_id: 1488,
    date: '2018-11-16',
    location: 'Field - Soccer'
   }
]

上記のデータ配列から次の出力を取得する必要があります。

data = [{
    title: "2018-11-17",
    data: [{
            title: "Field - Kickball",
            data: [{
                game_id: 1189,
                date: '2018-11-17',
                location: 'Field - Kickball'
            }]
        },
        {
            title: "Plaza",
            data: [{
                game_id: 1171,
                date: '2018-11-17',
                location: 'Plaza'
            }]
        }
    ]
    },
    {
        title: "2018-11-16",
        data: [{
                title: "Field - Kickball",
                data: [{
                    game_id: 1489,
                    date: '2018-11-16',
                    location: 'Field - Kickball'
                }]
            },
            {
                title: "Field - Soccer",
                data: [{
                    game_id: 1488,
                    date: '2018-11-16',
                    location: 'Field - Soccer'
                }]
            }
        ]
    }
]

私はすでにこれを試しました:

const games = [data here]
var groups = _(games)
.groupBy(x => x.date)
        .map(value => {
            return _.groupBy(value, 'location')
            .map(({key, value}) => ({title: key, data: value}))
        })

        .map((value, key) => {
            return ({title: value[Object.keys(value)[0]][0].date, data: value})
        })
Icepickle

標準ソリューションが必要な場合は、最初にオブジェクトに縮小し、そのオブジェクトの値を返し、次に出力で再度グループ化することができます:)

function groupBy( arr, prop ) {
  return Object.values( arr.reduce( ( aggregate, item ) => {
    const val = item[prop];
    if (!aggregate[val]) {
      aggregate[val] = {
        [prop]: val,
        data: []
      };
    }
    aggregate[val].data.push( item );
    return aggregate;
  }, {} ) );
}

const games = [ { game_id: 1171,
    date: '2018-11-17',
    location: 'Plaza'
   },
  { game_id: 1189,
    date: '2018-11-17',
    location: 'Field - Kickball'
   },
   { game_id: 1489,
    date: '2018-11-16',
    location: 'Field - Kickball'
   },
   { game_id: 1488,
    date: '2018-11-16',
    location: 'Field - Soccer'
   }
];

const grouped = groupBy( games, 'date' )
  .map( item => ({ ...item, data: groupBy( item.data, 'location' ) }) );
  
console.log( grouped );

抽出された小道具をグループ化のターゲットプロパティとして使用することに注意してください。title代わりに、をに変更[prop]: valする'title': valと、2番目のグループ化が少し簡単になります:)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Javascriptでネストされた配列をグループ化する

分類Dev

ネストされた配列をunderscore.jsでグループ化する

分類Dev

ネストされたオブジェクトの配列をネストされた値で複数の配列にグループ化する方法

分類Dev

ネストされた配列の各アイテムをlodashでグループ化する方法

分類Dev

ネストされた従属配列要素で配列をグループ化する

分類Dev

マングースのネストされた内部配列をグループ化する

分類Dev

オブジェクトの配列をネストされた配列グループに変換する方法

分類Dev

ネストされた配列のオブジェクトの要素でグループ化する方法

分類Dev

配列内の配列のネストされた子オブジェクトによってオブジェクトをグループ化する方法

分類Dev

グループ化された配列の長さをangularまたはjavascriptでカウントする方法は?

分類Dev

Elasticsearchで、ネストされた配列内の値でグループ化する方法

分類Dev

Postgresqlでネストされた配列の重複値でグループ化する方法は?

分類Dev

オブジェクトのネストされた配列をグループ化する

分類Dev

Railsでグループ化した後にネストされた配列キーをアドレス指定する方法は?

分類Dev

ネストされたJavaScript配列をループする問題がある

分類Dev

JavaScriptを使用してネストされた配列要素をループする

分類Dev

jqueryを使用してJavaScriptでネストされた配列オブジェクトをループする方法

分類Dev

jQueryを使用してネストされた配列をループする方法

分類Dev

マングースでネストされたルックアップ配列を集約する方法は?

分類Dev

ネストされたオブジェクトと配列Javascriptをループする方法は?

分類Dev

javascriptでforループを使用してネストされた配列を使用する方法

分類Dev

JavaScriptはフラット配列をネスト/グループ化およびソートされた配列に変換します

分類Dev

whileループでネストされた配列を使用する方法は?

分類Dev

Angularでネストされた配列をループする方法

分類Dev

角度/イオンでネストされた配列をループする方法

分類Dev

反応でネストされた配列をループする方法は?

分類Dev

JObjectのネストされた配列をループする

分類Dev

ネストされた配列をループするPHP

分類Dev

JavaScriptでネストされた配列をフラット化する方法は?

Related 関連記事

  1. 1

    Javascriptでネストされた配列をグループ化する

  2. 2

    ネストされた配列をunderscore.jsでグループ化する

  3. 3

    ネストされたオブジェクトの配列をネストされた値で複数の配列にグループ化する方法

  4. 4

    ネストされた配列の各アイテムをlodashでグループ化する方法

  5. 5

    ネストされた従属配列要素で配列をグループ化する

  6. 6

    マングースのネストされた内部配列をグループ化する

  7. 7

    オブジェクトの配列をネストされた配列グループに変換する方法

  8. 8

    ネストされた配列のオブジェクトの要素でグループ化する方法

  9. 9

    配列内の配列のネストされた子オブジェクトによってオブジェクトをグループ化する方法

  10. 10

    グループ化された配列の長さをangularまたはjavascriptでカウントする方法は?

  11. 11

    Elasticsearchで、ネストされた配列内の値でグループ化する方法

  12. 12

    Postgresqlでネストされた配列の重複値でグループ化する方法は?

  13. 13

    オブジェクトのネストされた配列をグループ化する

  14. 14

    Railsでグループ化した後にネストされた配列キーをアドレス指定する方法は?

  15. 15

    ネストされたJavaScript配列をループする問題がある

  16. 16

    JavaScriptを使用してネストされた配列要素をループする

  17. 17

    jqueryを使用してJavaScriptでネストされた配列オブジェクトをループする方法

  18. 18

    jQueryを使用してネストされた配列をループする方法

  19. 19

    マングースでネストされたルックアップ配列を集約する方法は?

  20. 20

    ネストされたオブジェクトと配列Javascriptをループする方法は?

  21. 21

    javascriptでforループを使用してネストされた配列を使用する方法

  22. 22

    JavaScriptはフラット配列をネスト/グループ化およびソートされた配列に変換します

  23. 23

    whileループでネストされた配列を使用する方法は?

  24. 24

    Angularでネストされた配列をループする方法

  25. 25

    角度/イオンでネストされた配列をループする方法

  26. 26

    反応でネストされた配列をループする方法は?

  27. 27

    JObjectのネストされた配列をループする

  28. 28

    ネストされた配列をループするPHP

  29. 29

    JavaScriptでネストされた配列をフラット化する方法は?

ホットタグ

アーカイブ