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

如何对对象数组同分类下所有动态生成的series_x键的值进行累加求和

实现方案

核心逻辑是遍历每一条数据的所有键,筛选出以series_开头的字段,按分类逐个累加即可,代码如下:

const objForAllCategories = {};
this.arrOne.forEach(item => {
    const category = item.category;
    // 初始化当前分类的累加对象
    if (!objForAllCategories[category]) {
        objForAllCategories[category] = { category };
    }
    // 遍历当前项的所有键,处理series开头的字段
    Object.keys(item).forEach(key => {
        if (key.startsWith('series_')) {
            // 已存在该字段就累加,不存在就初始化赋值
            objForAllCategories[category][key] = (objForAllCategories[category][key] || 0) + item[key];
        }
    })
})
// 转成目标数组格式
this.allCategoriesAndValues = Object.values(objForAllCategories);

代码说明

  • 用Object.keys(item)拿到当前对象的所有字段名,通过startsWith('series_')筛选所有符合规则的统计字段,不需要提前知道具体有多少个series_x,新增字段也能自动适配。如果需要兼容低版本IE,可将该判断替换为key.indexOf('series_') === 0
  • 分类下的累加对象初始化时就自带category属性,最后直接用Object.values就能直接转成目标数组格式,不需要额外遍历组装

运行结果

用你提供的示例数据运行代码,得到的输出和预期完全一致:

allCategoriesAndValues = [
    {
        "category": "Category 1",
        "series_1": 57,
        "series_2": 124
    },
    {
        "category": "Category 2",
        "series_1": 11,
        "series_2": 22
    },
    {
        "category": "Category 3",
        "series_1": 120,
        "series_2": 127
    }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:15:03