透過自訂鍵將巢狀物件分組
為了方便渲染,必須將物件陣列轉換為具有特定鍵名稱的群組對象。目標是建立一個輸出,其中物件按這些指定的鍵進行分組,如下所示:
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 函數需要四個參數:
此函數首先使用 _.groupBy 按 itemKey 將項目分組。然後,它會迭代分組的物件並使用 itemKey 和 childKey 建立一個新物件。如果提供了 predic 參數,它將謂詞應用於巢狀組。
用法範例
要使用此函數將給定物件分組,請如下呼叫:
var result = groupAndMap(items,"tab","sections", arr => groupAndMap(arr,"section", "items"));
這將按「 tab」和「section」鍵將項目分組,產生所需的結果輸出。
以上是如何使用 Lodash 透過自訂鍵有效地對嵌套物件進行分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!