Javascript 丢失的字母

Javascript 丢失的字母,javascript,operator-keyword,Javascript,Operator Keyword,事实上我几分钟前找到了答案。 但是我发现了一些奇怪的事情 这是我对freeCodeCamp挑战中“缺少字母”的回答 function fearNotLetter(str) { var string; for (i=0;i<str.length;i++) { if(str.charCodeAt(i)+1 < str.charCodeAt(i+1)){ string = String.fromCharCode(str.charCodeAt(i)+1); } } re

事实上我几分钟前找到了答案。 但是我发现了一些奇怪的事情

这是我对freeCodeCamp挑战中“缺少字母”的回答

function fearNotLetter(str) {

var string; 

for (i=0;i<str.length;i++) {
  if(str.charCodeAt(i)+1 < str.charCodeAt(i+1)){
    string = String.fromCharCode(str.charCodeAt(i)+1);
 }
}

return string;

}  
函数fearNotLetter(str){
var字符串;

对于(i=0;i您的代码有一个小缺陷,当您使用 如果您看到str.charCodeAt(i+1);此代码在上一次迭代中检查字符串末尾的一个点,并将返回一个NaN结果

如果我提供字符串“abce”,它将检查f是否 但是,如果您提供!=,则在相同的场景中,它知道f!=NaN并进入if语句。这将覆盖实际缺少的字母,并使FCC测试用例失败,因为它将用字符串变量中的f替换缺少的d

要修复代码,只需将for循环更改为在字符串长度之前结束一次迭代

for (i = 0; i != str.length-1; i++) {
}

这是我不使用.charCodeAt()函数的方法:)

函数fearNotLetter(str){
var-ind;
var final=[];
变量alf=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];
str=str.split(“”);
ind=alf.拼接(alf.indexOf(str[0]),alf.indexOf(str[str.length-1]);
对于(var i=0;iMy solution:

function fearNoLetter(str){
var j=str.charCodeAt(0);
for(var i=str.charCodeAt(0); i<str.charCodeAt(str.length-1); i++){
    j = str.charCodeAt(i-str.charCodeAt(0));
    if (i!=j){
        return String.fromCharCode(i);
    }
}
功能fearNoLetter(str){
var j=str.charCodeAt(0);

对于(var i=str.charCodeAt)(0);我不明白你为什么认为NaN大于f。我猜它们不能被排序。因为它们不是偶数!是的,不是。但不管怎样都没关系,因为NaN不能与数字比较,所以条件会失败,所以你会得到相同的结果。所以你仍然需要更改for循环条件。你感觉到答案了吗是不正确的,还是正确的?如果您可以标记它,请在我没有更多问题的情况下回答。谢谢,断点25!我在FCC上运行了您的代码,它通过了挑战。顺便说一下,您的意思是我应该更改循环条件以不比较字符串(我的意思是ABCs)对于NaN?是的,没有对NaN进行检查。所以如果你还记得,数组的长度总是比数组的最后一个索引位置多一个,所以我们必须从长度中减去一来说明这一点。如果你这样做,你的代码就很棒了。
function fearNoLetter(str){
var j=str.charCodeAt(0);
for(var i=str.charCodeAt(0); i<str.charCodeAt(str.length-1); i++){
    j = str.charCodeAt(i-str.charCodeAt(0));
    if (i!=j){
        return String.fromCharCode(i);
    }
}