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

JavaScript如何累加数组各元素的数位和得到正确总和?

问题修复方案

你的代码存在4个核心逻辑错误,修正后即可得到正确结果50。

核心错误点

  • 变量定义位置错误:统计总和的sum变量写在了遍历原数组的for循环内部,每处理一个元素就会被重置为0,无法完成全量累加
  • 变量类型误用:digsum是存储单个元素数位和的数字值,不是数组,你用digsum[j]的方式访问索引属性得到的是undefined,转成数字后就是NaN,累加结果必然是NaN
  • 原始数据被修改:计算数位和的while循环直接改写了原数组的元素值,多位数计算完成后会被置为0,后续遍历拿不到原始输入值
  • 输出位置错误:打印逻辑放在循环内部,会每处理一个元素就输出一次结果,不符合最终输出总累加值的需求

可直接运行的正确代码

var arrChars = [4, 2, 14, 9, 0, 8, 2, 4, 130, 65, 0, 1];
// 总和变量定义在循环外,初始化为0
var totalSum = 0;

for (var i = 0; i < arrChars.length; i++) {
  // 拷贝当前元素值做计算,不修改原数组
  var current = arrChars[i];
  var digitSum = 0;

  // 用do-while兼容值为0的情况,保证0的数位和计算为0
  do {
    digitSum += current % 10;
    current = Math.floor(current / 10);
  } while (current > 0)

  // 当前元素数位和算完直接累加到总和
  totalSum += digitSum;
}

// 所有元素处理完成后再打印结果
console.log(totalSum);

运行后控制台会直接输出正确结果50。

逻辑说明:遍历数组时不直接修改原元素,临时拷贝值计算单个元素的数位和,每算完一个就把结果加到外层的总和变量里,所有元素遍历完成后统一输出,不需要额外嵌套循环遍历数位和变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:57:52