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

如何用更少代码按年龄分组对象数组?可使用Lodash

用Lodash快速按年龄分组人员数组

需求说明

我有如下人员对象数组:

[
  { name: "person1", age: 23 },
  { name: "person2", age: 23 },
  { name: "person3", age: 24 },
  { name: "person4", age: 24 },
  { name: "person5", age: 25 }
]

需要按年龄将其分组为如下嵌套数组:

[
  [
    { name: "person1", age: 23 },
    { name: "person2", age: 23 }
  ],
  [
    { name: "person3", age: 24 },
    { name: "person4", age: 24 }
  ],
  [ { name: "person5", age: 25 } ]
]

希望用最少代码实现,允许使用Lodash工具库。

实现方案

用Lodash的_.groupBy和_.values组合,两行代码就能完成:

const people = [/* 上述原始人员数组 */];
const groupedByAge = _.values(_.groupBy(people, 'age'));

逻辑解释

  • _.groupBy(people, 'age'):按age字段对数组分组,返回一个以年龄为键、对应人员数组为值的对象,结构类似{ 23: [...], 24: [...], 25: [...] }
  • _.values(...):提取这个分组对象的所有值,直接转换成你需要的嵌套数组格式。

原生JS简化实现(可选)

如果不想依赖Lodash,也可以用原生JS的reduce结合Object.values实现,代码同样简洁:

const groupedByAge = Object.values(
  people.reduce((acc, person) => {
    (acc[person.age] || (acc[person.age] = [])).push(person);
    return acc;
  }, {})
);

内容的提问来源于stack exchange,提问作者ahmed nadjib

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:09:26