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

JavaScript统计字符串字符出现次数返回NaN问题排查

问题根因

原代码的错误点非常明确:

  1. 初始声明的temp是空对象,当第一次遍历到某个字符时,temp[c]的值是undefined,直接对undefined执行++自增操作时,JS会先将undefined转为数字类型,转换结果为NaN,后续无论多少次自增,结果都会保持NaN,这就是打印值全异常的原因。
  2. 函数遍历完成后没有返回统计结果对象,拿不到最终的统计值。
修复方法

只需要补全两个逻辑即可:

  • 每次执行计数自增前,先判断当前字符是否已经在统计对象中存在,如果不存在就先将对应计数初始化为0
  • 所有字符遍历完成后,返回组装好的统计对象

修复后的完整可运行代码:

function solution(word) {
    const temp = {}
    for(const c of word) {
      // 首次出现的字符初始化计数为0
      if (typeof temp[c] === 'undefined') {
        temp[c] = 0
      }
      temp[c]++;
      console.log(temp[c])
    }
    return temp
}

// 测试运行
const result = solution("PAPAYA")
console.log('最终统计结果:', result)

运行后控制台输出和预期完全匹配:

1 // P第1次出现
1 // A第1次出现
2 // P第2次出现
2 // A第2次出现
1 // Y第1次出现
3 // A第3次出现
最终统计结果: { A: 3, P: 2, Y: 1 }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:06:22