首頁 > web前端 > js教程 > 如何使用 Lodash 透過自訂鍵有效地對嵌套物件進行分組?

如何使用 Lodash 透過自訂鍵有效地對嵌套物件進行分組?

Patricia Arquette
發布: 2024-12-08 07:12:12
原創
983 人瀏覽過

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 函數需要四個參數:

  • items:要分組的物件陣列。
  • itemKey:用於對項目進行分組的按鍵。
  • childKey:要使用的鍵嵌套群組。
  • predic:應用於巢狀群組的可選謂詞groups.

此函數首先使用 _.groupBy 按 itemKey 將項目分組。然後,它會迭代分組的物件並使用 itemKey 和 childKey 建立一個新物件。如果提供了 predic 參數,它將謂詞應用於巢狀組。

用法範例

要使用此函數將給定物件分組,請如下呼叫:

var result = groupAndMap(items,"tab","sections", 
                   arr => groupAndMap(arr,"section", "items"));
登入後複製

這將按「 tab」和「section」鍵將項目分組,產生所需的結果輸出。

以上是如何使用 Lodash 透過自訂鍵有效地對嵌套物件進行分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板