首页 > web前端 > js教程 > 如何使用 Lodash 对对象数组中的多个键进行分组?

如何使用 Lodash 对对象数组中的多个键进行分组?

Patricia Arquette
发布: 2024-12-03 03:53:09
原创
981 人浏览过

How to Group Multiple Keys in an Array of Objects Using Lodash?

将多个键分组到具有唯一名称的对象数组中

当前的任务涉及修改对象数组以方便渲染。目标是按特定键对对象进行分组,而不管它们在原始数组中的实际名称如何。

考虑以下输入数组:

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板