You need to enable JavaScript to run this app. JS实现字符出现次数统计替换为(或)功能 数组push方法调用报错求解
优惠活动
大模型
产品
解决方案
定价
更多

JS实现字符出现次数统计替换为(或)功能 数组push方法调用报错求解

问题诊断与修复方案

原代码存在的问题

  • 变量类型错误:count初始化为数字0,但你需要用对象存储每个字符的计数,数字类型无法添加字符属性存储统计值。
  • 未初始化结果数组:调用output.push前没有声明output数组,会触发引用错误。
  • 方法调用语法错误:push是数组方法,需要用小括号传参(如push('(')),你用的方括号是属性访问语法,无法触发方法执行。
  • 逻辑顺序错误:不能边统计字符次数边生成输出结果,必须先完成全字符串的字符计数,再遍历每个字符匹配最终计数生成对应符号,否则先出现的相同字符的输出会错误。
  • 冗余外层循环:外层的for循环完全多余,会导致内部逻辑重复执行N次(N等于字符串长度),不符合需求。
  • 缺少大小写兼容处理:题目要求Success这类大小写不同的相同字符视为重复,统计前需要统一转为小写/大写。

修复后完整代码

function duplicateEncode(word){
  // 统一转为小写处理大小写兼容
  const lowerWord = word.toLowerCase()
  // 初始化计数对象和结果数组
  const count = {}
  const output = []
  // 第一次遍历:统计所有字符出现次数
  lowerWord.split('').forEach(str => {
    count[str] ? count[str]++ : count[str] = 1
  })
  // 第二次遍历:根据计数生成对应符号
  lowerWord.split('').forEach(str => {
    count[str] === 1 ? output.push('(') : output.push(')')
  })
  // 拼接为字符串返回
  return output.join('')
}

// 测试用例
console.log(duplicateEncode("din")) // 输出 (((
console.log(duplicateEncode("recede")) // 输出 ()()()
console.log(duplicateEncode("Success")) // 输出 )())())
console.log(duplicateEncode("(( @")) // 输出 ))((

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 23:42:04