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

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

Patricia Arquette
リリース: 2024-12-08 07:12:12
オリジナル
1032 人が閲覧しました

How Can I Efficiently Group Nested Objects by Custom Keys Using Lodash?

カスタム キーによるネストされたオブジェクトのグループ化

レンダリングを容易にするには、オブジェクトの配列を変換して、特定のキー名を持つオブジェクトをグループ化する必要があります。目的は、以下に示すように、オブジェクトがこれらの指定されたキーによってグループ化された出力を作成することです。

const output = [
  {
    tab: 'Results',
    sections: [
      {
         section: '2017',
         items: [ { 'item that belongs here' }, { ... } ],
      },
  },
  {
    tab: 'Reports',
    sections: [
      {
         section: 'Marketing',
         items: [ { ... }, { ... } ],
      },
  },
...
]
ログイン後にコピー

実装アプローチ

この変換は次のように実行できます。 Lodash 関数 _.map と _.groupBy.

function groupAndMap(items, itemKey, childKey, predic){
    return _.map(_.groupBy(items,itemKey), (obj,key) => ({
        [itemKey]: key,
        [childKey]: (predic && predic(obj)) || obj
    }));
}
ログイン後にコピー

を組み合わせた groupAndMap 関数は4 つのパラメータ:

  • items: グループ化するオブジェクトの配列。
  • itemKey: 項目をグループ化するためのキー。
  • childKey: 使用するキー。
  • predic: ネストされたグループに適用するオプションの述語。 groups.

この関数は、まず _.groupBy を使用して itemKey によって項目をグループ化します。次に、グループ化されたオブジェクトを反復処理し、itemKey と childKey を持つ新しいオブジェクトを作成します。 predic パラメータが指定されている場合、ネストされたグループに述語が適用されます。

使用例

この関数を使用して指定されたオブジェクトをグループ化するには、次のように呼び出します。 :

var result = groupAndMap(items,"tab","sections", 
                   arr => groupAndMap(arr,"section", "items"));
ログイン後にコピー

これにより、項目が「タブ」キーと「セクション」キーでグループ化され、目的の結果が得られます。出力。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート