You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Lodash将数组转换为按部门分组的对象映射

用Lodash实现按部门分组的对象映射

嘿,这个需求用Lodash的组合方法就能轻松搞定,我直接给你上代码和解释:

首先,先定义你的原始员工数组:

const employees = [
  ["Kevin", 22,"Psychology"],
  ["Cathy", 26, "Psychology"],
  ["David", 31, "Engineering"],
  ["Christine", 23, "Engineering"]
];

接下来是核心实现代码:

const _ = require('lodash');

const groupedEmployees = _.mapValues(
  // 第一步:按部门(数组索引2的元素)分组
  _.groupBy(employees, emp => emp[2]),
  // 第二步:把每个分组里的数组转换成需要的对象结构
  departmentGroup => departmentGroup.map(([name, age]) => ({ name, age }))
);

运行这段代码后,groupedEmployees就会输出你想要的格式:

{
  Psychology: [ { name: "Kevin", age: 22 }, { name: "Cathy", age: 26 } ],
  Engineering: [ { name: "David", age: 31 }, { name: "Christine", age: 23 } ]
}

简单拆解下逻辑:

  • _.groupBy:这个方法会把原始数组按照指定的键(这里是每个员工数组的第3个元素,也就是部门)进行分组,得到一个以部门名为键、对应员工数组为值的临时对象。
  • _.mapValues:遍历这个临时对象的所有值(也就是每个部门的员工数组),用Array.map解构每个员工数组的前两个元素(姓名和年龄),转换成你需要的{name, age}对象结构。

因为你提到部门的索引是固定的,所以直接用emp[2]来取部门完全没问题,这个写法既简洁又稳定~

内容的提问来源于stack exchange,提问作者Clay Banks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:08:07