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

为什么判断字符串是否含连续重复字符的JavaScript函数运行不符合预期?

你的代码存在3个核心问题

  • 循环边界错误:你的for循环条件写的是i <= str.length,字符串下标从0开始,最大有效下标是str.length - 1。当i等于str.length时,str[i]和str[i+1]都是undefined,undefined === undefined的判断结果为真,所以即使没有连续重复的字母,循环跑到最后一次也会返回"True",这是你遇到问题的核心原因。
  • 缺失默认返回值:如果不存在连续重复的字母,循环跑完后函数没有任何返回语句,会默认返回undefined,不符合判断函数的预期逻辑。
  • 返回值类型不合理:目前返回的是字符串类型的"True",建议返回布尔值true/false,方便后续逻辑调用判断。

修正后的原逻辑代码

function doubleCheck(str){
    // 循环条件改成i < str.length - 1,保证i+1不会超过最大有效下标
    for (var i = 0; i < str.length - 1; i++){
        var n = i + 1;
        if (str[i] === str[n]){
            return true;
        }
    }
    // 循环跑完没找到重复,返回false
    return false;
}

更简洁的正则解法

如果不需要保留遍历逻辑,可以用正则匹配实现更短的代码:

function doubleCheck(str) {
    // 匹配任意连续两个相同的字符,test方法直接返回布尔值
    return /(.)\1/.test(str);
}
// 如果只需要判断字母(排除数字、符号等),可以把正则改成/([a-zA-Z])\1/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:57:00