2017-09-01 79 views
0

下面是我的'失踪信'挑战的代码。控制台日志显示'undefined'和缺少的字母d。我不明白发生了什么事。任何人都可以给我一些建议吗?谢谢!我的代码有什么问题(丢失字母 - freecodecamp)?

var str ="bce"; 
 
for (var i=0;i< str.length;i++){ 
 

 
    if(str.charCodeAt(i) - str.charCodeAt(i-1) !==1){ 
 
     var missing = String.fromCharCode(str.charCodeAt(i-1)+1); 
 
     console.log(missing); 
 
    } 
 
    else 
 
    console.log(undefined); 
 
}

回答

0

启动循环在I = 1;所以i-1至少为0.当你以0开始时,i-1变成-1。序列中的第一个字母是否可以丢失字母?如果您必须只找到一个缺少的号码,则可以记录该号码并打破循环。

var str ="bce"; 
for (var i=1;i< str.length;i++){ 

    if(str.charCodeAt(i) - str.charCodeAt(i-1) !==1){ 
     var missing = String.fromCharCode(str.charCodeAt(i-1)+1); 
     console.log(missing); 
     break; 
    } 

} 
+0

非常感谢! – ChuChu

0

i = 0,你很可能得到一个出界失误,为您的if语句

str.charCodeAt(i-1) 

str.charCodeAt(-1)索引不存在。

0

你的代码正在寻找索引-1在第一个循环改变它。从1开始我而不是0

for (var i=1;i< str.length;i++){ 

if(str.charCodeAt(i) - str.charCodeAt(i-1) !==1){ 
    var missing = String.fromCharCode(str.charCodeAt(i-1)+1); 
    console.log(missing); 
} 
else 
console.log(undefined); 

}