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

JavaScript按类型对数组对象的low、mid、high属性分组求和的优化方法

优化实现方案

原有写法存在两个问题:硬编码类型索引不具备扩展性、累加mid字段时错误取了high的值。推荐用Array.prototype.reduce实现通用聚合逻辑,支持任意数量的type类型,写法更简洁易维护:

function aggregateByType(inputArr) {
  // 用对象做中间聚合容器,key为type值,实现O(1)匹配效率
  const aggregateMap = inputArr.reduce((map, item) => {
    const { type, low, mid, high } = item;
    // 不存在对应类型则初始化结构
    if (!map[type]) {
      map[type] = { category: type, low: 0, mid: 0, high: 0 };
    }
    // 对应字段累加
    map[type].low += low;
    map[type].mid += mid;
    map[type].high += high;
    return map;
  }, {});

  // 将聚合对象转换为目标数组格式
  return Object.values(aggregateMap);
}

// 调用测试
const resultArr = aggregateByType(input);
console.log(resultArr);

运行后输出结果为:

[
  { category: 'A', low: 1, mid: 2, high: 3 },
  { category: 'B', low: 3, mid: 2, high: 0 }
]

如果业务场景固定只有A、B两个类型,不需要兼容其他类型,也可以用更轻量的写法,但上述通用方案适配性更强,后续新增类型无需修改聚合逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:06:03