首页 >web前端 >js教程 >如何使用 Lodash 通过自定义键有效地对嵌套对象进行分组?

如何使用 Lodash 通过自定义键有效地对嵌套对象进行分组?

Patricia Arquette
Patricia Arquette原创
2024-12-08 07:12:12996浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn