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

JavaScript中利用关联ID对JSON数组内对象属性值求和的最佳实践

解决方案

实现思路

  • 从property1中动态提取需要统计的属性名,完全避免硬编码,后续属性增减无需修改统计逻辑
  • 仅遍历1次property2数组即可完成所有属性的求和,相比多次循环的实现性能更高
  • 输出结构化的统计结果,支持单独获取单个属性的总和,也可快速计算所有属性的总合计值

代码实现

function calculateTotal(testJson) {
  // 动态提取需要统计的属性列表
  const statKeys = testJson.property1.map(item => item.id);
  // 初始化统计结果对象,所有属性初始值为0
  const statResult = statKeys.reduce((prev, key) => {
    prev[key] = 0;
    return prev;
  }, {});

  // 单次遍历完成所有属性累加
  testJson.property2.forEach(item => {
    statKeys.forEach(key => {
      // 增加兜底逻辑,避免属性不存在时出现NaN
      statResult[key] += item[key] || 0;
    });
  });

  return statResult;
}

// 调用示例
const totalResult = calculateTotal(testJson);
// 取abc总和:totalResult.abc → 74
// 取def总和:totalResult.def → 38
// 所有属性总合计:Object.values(totalResult).reduce((sum, curr) => sum + curr, 0) → 112

优势说明

如果后续property1新增了其他id值,只要property2的对象中存在对应属性,不需要修改统计函数的代码即可自动适配,适配动态属性的场景需求,维护成本远低于独立函数硬编码的实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:45:03