將多個鍵分組到具有唯一名稱的物件數組中
目前的任務涉及修改物件數組以方便渲染。目標是按特定鍵對物件進行分組,而不管它們在原始數組中的實際名稱如何。
考慮以下輸入數組:
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中文網其他相關文章!