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

为什么JavaScript自定义encrypt函数处理字符串时会出现重复输出问题?

问题分析
  • 内容重复核心原因:长度大于等于4的分支中,你写了两层循环,外层遍历accentArray的所有元素(共17个),内层每次都把原字符串除n之外的字符拼接一遍,相当于处理逻辑重复执行了17次,自然会出现内容重复问题。
  • 逻辑缺失:你定义了重音检测数组accentArray但完全没有调用,没有实现检测字符串是否包含重音的逻辑,也没有添加<strong>标签的相关处理。
  • 边界判断冗余:长度等于4的情况会优先进入<=4的分支,和你预设的分长度处理逻辑可能不符。
  • 变量命名不规范:用JS内置对象名String作为自定义变量名,容易引发上下文冲突。
  • 初始值冗余:结果字符串初始值多写了一个空格,会导致输出开头多出多余空格。
修复后代码
var accentArray = ["á","à","ã","â","é","è","ê","í","ì","î","õ","ó","ò","ô","ú","ù","û"]

function encrypt(str) {             
  let result = ""
  // 检测字符串是否包含重音(可根据实际需求调整该逻辑的触发位置)
  const hasAccent = accentArray.some(accent => str.includes(accent))
  if (str.length <= 4) {
    for (let i = 0; i < str.length; i++) {           
      if (!["a","e","i","o","u"].includes(str[i])) {           
        result += str[i]
      }   
    }  
  } else {
    // 长度大于4时过滤字符n,符合输入'atención'输出'ateció'的需求
    for (let i = 0; i < str.length; i++) {           
      if (str[i] != "n") {          
        result += str[i]
      }
    }
    // 给结果添加strong标签
    result = `<strong>${result}</strong>`
  }
  return result
}
console.log(encrypt('atención')); // 输出 <strong>ateció</strong>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:06:03