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

如何使用Lodash countBy统计嵌套对象,同时获取分类name、key和出现次数

解决方案

之前方案的问题:

  • 第一种直接遍历原始所有分类条目,没有做去重处理,所以会出现重复的分类渲染
  • 第二种仅提取了分类名称做统计,丢失了名称和对应key的关联关系,所以无法拿到key值

你可以使用Lodash的_.groupBy()方法实现需求,核心逻辑是用分类的唯一标识key作为分组依据,同一分类的所有条目会被聚合到同一组,组的长度就是该分类的出现次数,同时可以从组内第一条数据拿到完整的分类name和key信息:

import { groupBy } from 'lodash'

// 按分类的唯一key分组,相同key的条目会被归为同一组
const categoryGroups = groupBy(items, item => item.category.key)

// 格式化分组结果,得到去重后的分类列表,同时附带出现次数
const uniqueCategories = Object.values(categoryGroups).map(group => {
  // 同一组内所有条目的category信息一致,取第一条的category即可
  const category = group[0].category
  return {
    ...category,
    count: group.length
  }
})

在React组件中直接遍历处理好的uniqueCategories即可:

{uniqueCategories.map(item => (
  <CustomComponent 
    category={item.name} 
    key={item.key} 
    count={item.count} 
  />
))}

如果业务场景存在同key不同名的极端情况,你可以把分组键替换为${item.category.name}_${item.category.key},确保分组完全精准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:06:04