ホームページ >ウェブフロントエンド >jsチュートリアル >Lodash を使用して、ネストされたキーによってオブジェクトの配列を効率的にグループ化するにはどうすればよいですか?

Lodash を使用して、ネストされたキーによってオブジェクトの配列を効率的にグループ化するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-07 06:13:12498ブラウズ

How Can I Efficiently Group an Array of Objects by Nested Keys Using Lodash?

特定の名前を持つキーをネストしてオブジェクトの配列をグループ化

このクエリは、特定の名前に基づいてオブジェクトをグループ化することにより、オブジェクトの配列を変更しようとします。キー名を指定し、ネストされたオブジェクトで目的の出力を生成します。

これを実現するには、カスタムgroupAndMapという関数を利用します。 Lodash ライブラリの _.map と _.groupBy の組み合わせを利用します。仕組みの詳細は次のとおりです。

function groupAndMap(items, itemKey, childKey, predic){
    return _.map(_.groupBy(items,itemKey), (obj,key) => ({
        [itemKey]: key,
        [childKey]: (predic && predic(obj)) || obj
    }));
}
  • この関数は 4 つのパラメータを取ります: items (グループ化する配列)、itemKey (グループ化の基準となるキー)、childKey (プロパティ名)
  • これは、_.groupBy を項目配列に適用します。 itemKey。itemKey に基づいてオブジェクトを配列にグループ化します。
  • _.map を使用すると、グループ化された配列内の各オブジェクトが、[itemKey] と [childKey] の 2 つのプロパティを持つ新しいオブジェクトに変換されます。
  • predic パラメーターを指定すると、ネストされたオブジェクトをさらにカスタマイズできます。これは、[childKey] プロパティに割り当てる前に、各 itemKey のオブジェクトの配列に適用されます。

必要なネストされた出力を作成するには、コード スニペットで関数が 2 回使用されます。

var result = groupAndMap(items,"tab","sections", 
                   arr => groupAndMap(arr,"section", "items"));

最初の呼び出しでは、オブジェクトを「tab」キーでグループ化し、その結果、「tab」プロパティと「sections」プロパティを持つオブジェクトの配列が作成されます。次に、zweite 呼び出しは、各セクション内のオブジェクトを「section」キーでグループ化し、オブジェクトが「tab」でグループ化され、次に「section」でグループ化される、目的のネストされた出力を生成します。

以上がLodash を使用して、ネストされたキーによってオブジェクトの配列を効率的にグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。