为什么我的JavaScript if语句无法正常工作,检测连续重复字母总返回false?
代码问题原因
你的代码核心问题出在循环内的else分支逻辑:
- 你在第一次判断第1位和第2位字符是否相等之后,不管结果如何都会直接返回,循环只会执行1次就终止,永远不会检查后续字符。如果前两位字符不相等,会直接返回
false,哪怕后面存在连续重复字符也不会被检测到。 - 参考代码的逻辑是:只有整个循环遍历完所有字符,都没有找到连续相等的字符时,才会在循环结束后返回
false,不会中途提前结束判断。
举个测试示例就能明显看出差异,比如输入"abbb":
你的代码第一次判断letters[0] = 'a'和letters[1] = 'b'不相等,直接进入else返回false,直接忽略了后面的bb连续重复的情况,结果不符合预期。
修复方案
只需要把你代码里的else { return false }删掉,将return false的逻辑移到for循环外部即可,修改后的代码如下:
const doubleLetters = word => { let letters = word.split('') for(let i = 0; i < letters.length; i++){ if (letters[i] === letters[i + 1]){ return true } } return false }
内容的提问来源于stack exchange,提问作者Sammi
相关产品推荐
相关产品推荐

