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

关于修复sumNums函数连续数字求和错误的技术求助

修复sumNums函数的连续数字求和问题

问题分析

原代码的核心问题是逐个遍历字符串字符,将连续数字拆分为单个数字累加,比如输入包含"964"时,会计算成9+6+4=19,而非需求要求的整体数字964。这是因为循环中每次只处理单个字符,/^\d+$/正则在这里仅起到判断单个字符是否为数字的作用,完全忽略了连续数字的合并要求。

修复方案

使用正则表达式/\d+/g匹配字符串中所有连续的数字序列,将这些序列转为数字后求和;若没有匹配到任何数字,直接返回0。

修复后代码

function sumNums(str) {
  // 匹配所有连续数字序列,返回数组或null
  const numSequences = str.match(/\d+/g);
  // 无匹配则返回0
  if (!numSequences) return 0;
  // 遍历匹配结果,转数字后累加求和
  return numSequences.reduce((total, numStr) => total + Number(numStr), 0);
}

验证示例

所有测试用例均符合预期:

  • sumNums('') → 0
  • sumNums('abcdef') → 0
  • sumNums('1') → 1
  • sumNums('123') → 123
  • sumNums('1hello2') → 3
  • sumNums('12hiya!3') → 15
  • 针对导致断言错误的输入(如包含"964"的字符串),现在会正确计算出964而非19。

内容的提问来源于stack exchange,提问作者Primary Maths Worksheets

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 03:52:08