我正在Free Code Camp上做一个篝火,而且我已接近尾声了,但最后一点我无法理解!
该函数应该使用一个字符串并返回缺少的字母(基于字母a-z)。它工作正常,除非缺少的字母是'i',它返回undefined。
我添加了一个if语句来检查当缺少的字母是'i'时,它符合另一个if语句的标准(因此应该执行那些代码行)并且它匹配,所以我没有想法为什么它会返回undefined。
function fearNotLetter(str) {
missingLetter = '';
charCode = 0;
for (i = 0; i < str.length -1 ; i++) {
charCode = str.charCodeAt(i);
if (str.charCodeAt(i + 1)-charCode == 2) {
missingLetter = str.charCodeAt(i)+1;
missingLetter = String.fromCharCode(missingLetter);
} else {
missingLetter = undefined;
}
}
console.log(missingLetter);
return missingLetter;
}
fearNotLetter("abcdefghjklmno");
非常感谢任何人都可以给予帮助。
提前致谢。
答案 0 :(得分:1)
因为你在每一轮都没有设置undefined
的缺失字母值 - 即使你之前在循环中找到了一个字母。
我建议在使用var
关键字之前声明所有变量,并使用missingLetter
初始化undefined
。
如果找到丢失的字母,你可以break
循环。
function fearNotLetter(str) {
var missingLetter = undefined,
charCode,
i;
for (i = 0; i < str.length - 1 ; i++) {
charCode = str.charCodeAt(i);
if (str.charCodeAt(i + 1) - charCode == 2) {
missingLetter = String.fromCharCode(charCode + 1);
break;
}
}
return missingLetter;
}
console.log(fearNotLetter("abcdefghjklmno"));
答案 1 :(得分:1)
尝试这一点,一旦得到丢失的字母,你就缺少打破循环,而在下一次迭代中,缺少的字母被设置为未定义。
function fearNotLetter(str) {
missingLetter = '';
charCode = 0;
for (i = 0; i < str.length -1 ; i++)
{
charCode = str.charCodeAt(i);
if (str.charCodeAt(i + 1)-charCode == 2) {
missingLetter = str.charCodeAt(i)+1;
missingLetter = String.fromCharCode(missingLetter);
break;
}
else
{
missingLetter = undefined;
}
}
console.log(missingLetter);
return missingLetter;
}
fearNotLetter("abcdefghjklmno");