首頁 >web前端 >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
    }));
}
  • 該函數有四個參數:items(要分組的數組)、itemKey(分組依據的鍵)、childKey(項目的屬性名稱)巢狀物件)和predic(可選謂詞函數,可用於修改巢狀物件)。
  • 它使用 _.groupBy 應用於 items 陣列itemKey,根據 itemKey 將物件分組為陣列。
  • 使用 _.map,將分組陣列中的每個物件轉換為具有兩個屬性的新物件:[itemKey] 和 [childKey]。
  • predic 參數(如果提供)允許進一步自訂嵌套物件。在將每個 itemKey 指派給 [childKey] 屬性之前,它會套用到每個 itemKey 的物件陣列。

為了創建所需的巢狀輸出,該函數在程式碼片段中使用了兩次:

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

第一個呼叫透過「tab」鍵對物件進行分組,從而產生具有“tab”和“sections”屬性的物件數組。然後,zweite 呼叫透過「section」鍵將每個部分中的物件分組,產生所需的巢狀輸出,其中物件按「tab」然後按「section」分組。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn