2016-09-07 6 views
-1

ここは私の最初のヘルプを求めています。私は現在、「Missing Letters」と呼ばれるfreecodecamp.comの問題に取り組んでいます。この問題は、アルファベット順の文字列から不足している文字を返すように求めています。そうでなければ、「undefined」を返します。freecodecampが不足している文字のバグ

私のロジックは、最初に特定のインデックスの文字のUnicodeのマイナスその前身のUnicodeは1

より大きいインスタンスを見つけるためにif文を使用し、その後、指定した文字列内のすべてのインデックスを通過するforループを使用することです

私はこのコードブロックを使用して、それを解決することができた:

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; 

} 
:私は、別の条件を追加することによって、より完全であるとコード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); 

} 

} 

return string; 

} 

私はあなたになぜこれが当てはまるか尋ねたいと思いますか? if条件よりもelse文の方が優先されるのはなぜですか?

ありがとうございます!

+0

に適合するようにしたいと思います - あなたは何を返されたものexactly-すなわち意味(と何をすべきかあなたは期待しましたか? – Fred

+0

たとえば、関数fearNotLetter( 'abce')を呼び出した場合、私はそれが 'd'を返すと期待し、それがelse条件を追加する前に行います。しかし、else条件をタイプした後は、elseに直接移動し、ifステートメントを実行しなくても 'undefined'を返します。 –

+0

あなたがデバッグしていない限り、あなたはそれが他の人にまっすぐに通ったのかどうかはわかりません。おそらくそれはあなたの文字列を正しく設定しましたが、あとであなたのforループの動作はスキップではなく、文字列は未定義にリセットされました。 –

答えて

0

だからあなたのアプローチと一緒に行く、私はあなたが「elseステートメントの優先権を取る」と言うとき

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'として初期化するか、見つからない文字が見つかった後にループを停止するために 'break'ステートメントを使用するべきです。ありがとう、ジェレミー! –

+0

ubetcha。ちなみに、私はあなたがi

関連する問題