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

使用JavaScript判断字符串是否为isogram的代码逻辑问题排查

isogram判断代码故障说明

核心错误点

你的代码的问题出在循环逻辑的返回时机上:

  • for循环内的else分支直接执行return true,导致循环只会校验第一个字符就直接终止,根本不会检查后续字符是否存在重复。比如输入字符串为abcb,第一个字符a的首次和末次出现索引都是0,会直接触发else返回true,但实际上字符串里的b存在重复,结果完全不符合预期。
  • 空字符串的判断属于冗余逻辑,就算删掉这段判断,空字符串拆分后的数组长度为0,循环不会执行,直接在循环结束后返回true即可,逻辑完全一致。

修正后的代码

function isIsogram(str){
  str = str.toLowerCase();
  let text = str.split("");
  for (let i = 0; i < text.length; i++) {
    if ( text.indexOf(text[i]) !== text.lastIndexOf(text[i]) ){
      // 只要有一个字符重复,直接返回false
      return false;
    }
  } 
  // 所有字符校验完成都没有重复,再返回true
  return true;
}

优化方案

你还可以用Set去重的特性实现更简洁的写法,不需要手动遍历:

function isIsogram(str){
  return new Set(str.toLowerCase()).size === str.length
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:54:03