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

使用Array.reduce()按多字段对数组分组并计算指标总和的技术咨询

实现代码

const output = Object.values(
  input.reduce((acc, current) => {
    const { date, source, metrics: { conversions } } = current;
    // 初始化当前日期的分组项
    if (!acc[date]) {
      acc[date] = { date };
    }
    // 累加对应来源的转化数
    acc[date][source] = (acc[date][source] || 0) + conversions;
    return acc;
  }, {})
);

逻辑说明

  • 采用reduce先构建以日期为键的临时映射对象,相比原实现中每次遍历数组查找日期项的方式,时间复杂度从O(n²)优化为O(n)
  • 遍历每一项时解构出所需的日期、来源、转化数字段
  • 若当前日期不存在于映射对象中,先初始化仅携带date属性的分组项
  • 对应来源的转化数累加,若该来源字段未初始化则先赋值为0再相加
  • 最终通过Object.values提取映射对象的所有值,即可得到目标格式的输出数组

原代码问题说明

你原有代码仅完成了日期去重,没有处理来源字段的转化数累加逻辑,且每次遍历都要全量映射数组去重来源、过滤数组替换日期项,存在大量不必要的性能开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:06:03