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

Underscore的groupBy函数在Lodash中的等价实现是什么?

Lodash中与Underscore groupBy等价的方法

别担心,Lodash原生就有_.groupBy()函数,它和Underscore的groupBy功能完全一致——你之前选错方法啦,_.keyBy()的设计逻辑本来就是当多个元素匹配同一个键时,只保留最后一个元素,而groupBy才是把所有匹配的元素收集起来的分组工具,这正是你需要的。

直接使用_.groupBy()的示例

对应你给出的例子,Lodash的写法和Underscore几乎完全一样:

var stooges = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}];
const groupedResult = _.groupBy(stooges, 'age');

返回结果是:

{
  "40": [{name: 'moe', age: 40}],
  "50": [{name: 'larry', age: 50}],
  "60": [{name: 'curly', age: 60}]
}

如果需要单个值而非数组(匹配你示例的返回结构)

这里提一句:Underscore的groupBy实际上也是返回数组结构的,你示例里的返回可能是笔误。但如果确实需要每个键对应单个对象(比如你能确保每个age值唯一),可以在groupBy之后搭配_.mapValues()提取数组的第一个元素:

const singleValueResult = _.mapValues(_.groupBy(stooges, 'age'), group => group[0]);

这样就能得到你示例里的结构:

{
  "40": {name: 'moe', age: 40},
  "50": {name: 'larry', age: 50},
  "60": {name: 'curly', age: 60}
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:43:18