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

如何实现支持任意参数、自动校验可转数值类型的JS sum求和函数

问题分析

你的现有代码存在两处核心逻辑错误:

  • 当判断isNaN(i)为真时直接返回Number(i),会直接覆盖累加值,若转换结果为NaN会导致后续所有累加结果异常
  • 没有对转换后的数值做有效性校验,无法过滤不可转为有效数值的参数

正确实现

const sum = (...arr) => {
  return arr.reduce((acc, cur) => {
    const num = Number(cur)
    return isNaN(num) ? acc : acc + num
  }, 0)
}

逻辑说明

  • 累加初始值设为0,无参数调用时直接返回0,匹配要求
  • 遍历每个参数时先统一转为数值类型
  • 转换后的值若为NaN,代表该参数无法转为有效数值,直接返回当前累加值忽略该参数;否则累加后返回新的累加值

测试验证

使用你给出的测试用例运行结果如下,完全符合预期:

console.log(sum(1, 2, 3, 4, 5, 6)) // 输出 21
console.log(sum(-10, 15, 100)) // 输出 105
console.log(sum()) // 输出 0
console.log(sum(1, 'fqwfqwf', {}, [], 3, 4, 2, true, false)) // 输出 11

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:45:06