如何在JS map函数分组逻辑中统计分组内的唯一ID数量
实现方法
你可以直接借助 Lodash 内置的去重方法统计每个分组下的唯一ID数量,修改后的代码如下:
const groupedArray = _(allInteractions) .groupBy(v => moment(v.InteractionDate).format('MM/YYYY')) .map((item, date) => ({ interactionDate: date, totalSec: _.sumBy(item, 'Time'), uniqueIDs: _.uniqBy(item, 'ID').length })) .value();
逻辑说明
_.uniqBy(item, 'ID')会对当前月份分组下的所有记录,按ID字段做去重处理,返回ID不重复的记录集合- 取该集合的
length属性,就是当前分组下唯一ID的总数量,和你给出的示例预期结果完全匹配:示例中07/2022分组去重后共3个不同ID,Time求和结果为93。
如果追求更优性能(不需要保留去重后的完整记录),也可以先提取所有ID再去重计数,写法效果完全一致:
uniqueIDs: _.uniq(item.map(record => record.ID)).length
内容的提问来源于stack exchange,提问作者user350213
相关产品推荐
相关产品推荐

