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

JS中Sum函数仅计算数组前几项,求问题原因及解决办法

问题原因分析

你的sum函数只计算前6个元素,核心问题有两个:

  1. 循环条件与数组长度动态变化冲突:每次调用arr.shift()会删除数组的第一个元素,导致arr.length在循环过程中不断减小。初始数组长度是10,循环条件i <= arr.length会让循环提前终止——当i增加到6时,此时数组已经被shift了6次,长度变为4,6 <= 4不成立,循环停止,只完成了6次累加。
  2. 修改原数组的副作用:shift会直接修改原数组arr,求和操作不应该改变原数组的结构,这会导致后续对arr的使用出现异常。
修复方案

以下是几种可行的修改方式,都能实现全数组求和且避免原数组被修改:

方案1:普通for循环遍历(最基础)

function sum() {
  let g = 0;
  // 用 < arr.length 作为循环条件,直接访问数组元素,不修改原数组
  for (let i = 0; i < arr.length; i++) {
    g += arr[i];
  }
  return g;
}

方案2:forEach遍历(更简洁)

function sum() {
  let g = 0;
  arr.forEach(num => {
    g += num;
  });
  return g;
}

方案3:reduce方法(数组求和最优解)

利用数组的reduce方法可以一行完成求和,是JavaScript中处理数组累加的标准方式:

function sum() {
  return arr.reduce((total, current) => total + current, 0);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:20:09