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

JavaScript实现getStringSum函数:提取字符串数字求和的问题求助

问题分析与解决方案

原代码存在的核心问题

  • 语法错误:str[] 缺少索引标识,应使用 str[i] 访问当前遍历的字符
  • 判断逻辑错误:typeof Number 完全不符合需求——typeof 用于检测值的类型,字符串中的数字字符类型是 string,而 Number 是构造函数,typeof Number 的结果是 function,无法用来判断字符是否为数字
  • 数值累加错误:直接执行 sum += str[i] 会进行字符串拼接而非数值相加,必须先将字符转为数字类型

修正后的实现方案

方案一:遍历字符+数值有效性判断

function getStringSum(str) {
    let sum = 0;
    for (let i = 0; i < str.length; i++) {
        const char = str[i];
        const num = Number(char);
        // 仅当转换后为有效数字时累加
        if (!isNaN(num)) {
            sum += num;
        }
    }
    return sum;
}
  • 逻辑说明:用 Number(char) 将字符转为数字,非数字字符会转为 NaN;通过 !isNaN(num) 筛选出有效数字,转为数值后累加

方案二:正则匹配+数组求和(更简洁)

function getStringSum(str) {
    // 匹配所有单个数字字符,无匹配时返回空数组
    const numChars = str.match(/\d/g) || [];
    // 遍历数组将字符转数字后累加,初始值0保证无数字时返回0
    return numChars.reduce((total, char) => total + Number(char), 0);
}
  • 逻辑说明:/\d/g 正则匹配字符串中所有数字字符;reduce 方法完成数组的数值累加,空数组时直接返回初始值0

测试验证

  • getStringSum("GH2U87A") → 2+8+7=17(符合预期)
  • getStringSum("GHIUJUHSG") → 无有效数字,返回0(符合预期)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 05:54:54