通过自定义键对嵌套对象进行分组
为了便于渲染,必须将对象数组转换为具有特定键名称的组对象。目标是创建一个输出,其中对象按这些指定的键进行分组,如下所示:
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中文网其他相关文章!