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

JS如何计算数组每个元素及后续元素的和并转换为结果数组

后缀和数组转换解决方案

现有代码错误点

  • Array.forEach() 无返回值,执行后返回undefined,无法通过赋值得到结果数组
  • 代码中调用的result变量未定义,运行时报错
  • 内置reduce逻辑不符合「当前元素+后续所有元素求和」的计算规则

修正后实现

易读版本(时间复杂度O(n²),适合小数组场景)

用Array.map()替代forEach,遍历每一位时截取当前下标到数组末尾的元素求和,最终直接返回组装好的数组:

function sumNumbers(numbersList) {
  const suffixSum = numbersList.map((_, index) => {
    return numbersList.slice(index).reduce((acc, cur) => acc + cur, 0)
  })
  // 按期望输出格式外层包裹一层数组返回
  return [suffixSum]
}

// 测试
console.log(sumNumbers([4, 5, 1, 2, 3, -2]))
// 输出:[[13,9,4,3,1,-2]],完全匹配要求的[(13, 9, 4, 3, 1, -2)]格式

高性能版本(时间复杂度O(n),适合大数组场景)

倒序遍历累加,避免重复计算后缀和,性能更高:

function sumNumbers(numbersList) {
  const res = []
  let currentSum = 0
  for (let i = numbersList.length - 1; i >= 0; i--) {
    currentSum += numbersList[i]
    res.unshift(currentSum)
  }
  return [res]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:54:00