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

使用JavaScript的forEach计算总和失败,仅输出中间值而非最终结果

问题分析与解决

你的代码之所以会输出累加过程中的各个值而非最终总和,核心问题有两个:

  • console.log位置错误:你把console.log(sum2)写在了forEach的回调函数内部,每次执行forEach(也就是每个月度差值被累加到sum2后)都会立刻打印当前的sum2,自然会输出每一步的中间结果。
  • 不必要的forEach使用:你每次创建一个只包含单个元素的newArray,再用forEach去遍历累加,这完全是多此一举,直接对monthDiff进行累加操作即可。

修正方案一(简化代码,去掉多余的forEach)

const finances = [
    ["Jan", 867884],
    ["Feb", 984655],
    ["Mar", 322013],
    ["Apr", -69417],
    ["May", 310503],
];

let sum2 = 0;
for (let i = 0; i < finances.length - 1; i++) {
  let monthDiff = finances[i][1] - finances[i + 1][1];
  sum2 += monthDiff; // 直接累加单个数值,无需forEach
}
console.log(sum2); // 循环结束后再打印最终总和

修正方案二(保留forEach,调整console.log位置)

如果一定要用forEach(虽然没必要),只需把打印语句移到所有循环外面:

const finances = [
    ["Jan", 867884],
    ["Feb", 984655],
    ["Mar", 322013],
    ["Apr", -69417],
    ["May", 310503],
];

let sum2 = 0;
for (let i = 0; i < finances.length - 1; i++) {
  let monthDiff = finances[i][1] - finances[i + 1][1];
  const newArray = [monthDiff];
  newArray.forEach((item) => {
    sum2 += item; 
  });
}
console.log(sum2); // 所有累加完成后打印最终总和

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:03:16