ホームページ > ウェブフロントエンド > jsチュートリアル > Lodash を使用してオブジェクトの配列内の複数のキーをグループ化する方法

Lodash を使用してオブジェクトの配列内の複数のキーをグループ化する方法

Patricia Arquette
リリース: 2024-12-03 03:53:09
オリジナル
999 人が閲覧しました

How to Group Multiple Keys in an Array of Objects Using Lodash?

オブジェクトの配列内の複数のキーを一意の名前でグループ化する

ここでのタスクには、レンダリングを容易にするためにオブジェクトの配列を変更することが含まれます。目標は、元の配列内の実際の名前に関係なく、オブジェクトを特定のキーでグループ化することです。

次の入力配列を考えてみましょう:

const items = [
  {
    tab: 'Results',
    section: '2017',
    title: 'Full year Results',
    description: 'Something here',
  },
  {
    tab: 'Results',
    section: '2017',
    title: 'Half year Results',
    description: 'Something here',
  },
  {
    tab: 'Reports',
    section: 'Marketing',
    title: 'First Report',
    description: 'Something here',
  }
];
ログイン後にコピー

ターゲットの出力は、新しい配列を持つことです。次の構造を使用します:

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

これを実現するには、Lodash の _.map と _.groupBy の組み合わせを使用できます。関数:

const groupAndMap = (items, itemKey, childKey, predic) => {
    return _.map(_.groupBy(items, itemKey), (obj, key) => ({
        [itemKey]: key,
        [childKey]: (predic && predic(obj)) || obj
    }));
};

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

結果変数には、目的のグループ化されたオブジェクト配列が含まれます:

console.log(result);
ログイン後にコピー

以上がLodash を使用してオブジェクトの配列内の複数のキーをグループ化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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