2016-09-07 63 views
-1

這是我第一次在這裏尋求幫助。我現在正在研究一個來自freecodecamp.com的問題,名爲「Missing Letters」,它要求我從字母字符串中返回缺少的字母,否則我會返回'​​undefined'。freecodecamp丟失字母錯誤

我的邏輯是先用一個for循環要經過所有的索引所提供的字符串,然後使用if語句找到實例,其中某一指數的信的統一減去其前身的unicode是大於1

我能夠使用此代碼塊來解決它:

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; 

} 

然而,如我試圖通過添加另一條件更徹底,代碼deosn't工作:

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); 

} 
else string = undefined; 

} 

return string; 

} 

我想問問你們爲什麼這樣?爲什麼計算機在我的if條件中優先於else語句?

非常感謝!

+0

當你說「從else語句優先」 - 你什麼意思exactly-即返回什麼(什麼你期望)?例如,如果我調用函數fearNotLetter('abce'),則爲 – Fred

+0

;我期望它會返回'd',並且在我添加else條件之前它就會返回。然而,在我輸入else條件之後,它就會直接進入else,並且在沒有通過if語句的情況下返回'undefined'。 –

+0

除非你正在調試,否則你不知道它直接去了其他地方。也許它正確地設置了你的字符串,但後來在for循環中,行爲不是跳過,並且字符串被重置爲未定義。 –

回答

0

所以你的方法去,我想你會想它適應

function fearNotLetter(str) { 

var string = undefined; //initialize outside the loop to undefined 

for (i=0;i<str.length;i++) { 
if (str.charCodeAt(i+1)-str.charCodeAt(i)>1) { 

    string = String.fromCharCode(str.charCodeAt(i)+1); 

} //no else needed 

} 

return string; 

} 
+0

是的男人。我現在意識到什麼是錯的。代碼工作到了我找到丟失的字母的地步,但它一直在繼續,並將字符串重置爲undefined。我應該將字符串初始化爲'undefined',或者使用'break'語句在找到丟失的字母后停止循環。謝謝傑里米! –

+0

ubetcha。順便說一句,我想你可能想考慮i + 1