2017-09-01 40 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); 

}