2016-10-11 4 views
1

このような基本的な質問をするのは恥ずかしいです。しかし、それが私の知識に根本的または単純なギャップであるならば、私はむしろ後でなくすぐに良い習慣を作り始めることができる理由についてむしろ説明を得るだろう。if文を含むループが配列全体を反復しない場合

私は、文字列を引数としてとり、配列の値と比較する関数を持っています。

function validateHello(greetings){ 
var hello = ['hello','ciao','salut','hallo', 'hola', 'ahoj','czesc']; 
    for(var i = 0; i < hello.length; i++){ 
    if(greetings === hello[i]){ 
     return true; 
    }else{ 
     return false; 
    } 

    } 

} 

は、私がループのためにこれを実行するたびに、それが唯一の最初の配列hello[0]をチェックし、それを破るように見えることが表示されます。これをどうやって止めることができますか?返信後にcontinue;を使ってみましたが、それでも解決しませんでした。私はこれを知っている必要があるように感じますが、私は完全に脳波であり、理由を理解することはできません。 ありがとう!

答えて

7

あなたreturn false声明で、あなたはループの外に置くとelse文を削除する必要がありますので、それは次のとおりです。

function validateHello(greetings){ 
var hello = ['hello','ciao','salut','hallo', 'hola', 'ahoj','czesc']; 
    for(var i = 0; i < hello.length; i++){ 
    if(greetings === hello[i]){ 
     return true; 
    } 
    } 
    return false; 
} 

説明:greetings引数は最初の要素に等しくない場合、'hello'、その後、コードはelseステートメントを実行し、falseを返し、関数の実行を停止します。

2

returnステートメントが機能を壊しています。 returnステートメントを削除すると、実際には何もしていないように見えますが、配列全体がループするため、そのことをどのように知るかわかりません。

あなたは、単にgreetingsが配列である場合はtrueを返すようにしたい場合は、これはあなたが探しているものです:戻りfalseはループの外に移動された

function validateHello(greetings){ 
var hello = ['hello','ciao','salut','hallo', 'hola', 'ahoj','czesc']; 
    for(var i = 0; i < hello.length; i++){ 
    if(greetings === hello[i]){ 
     return true; 
    } 
    } 
    return false; 
} 

注こと。この方法では、greetingsが見つかるとすぐにtrueに戻ります。そうでない場合は、ループを終了してからfalseを返します。

0

コードにメモを追加して間違った部分を変更します。 elseブロックを取り外し、forループからreturn false;を外します。これで完全なforループになります。 ifの文の条件はtrueforのループはreturnとなります。 forループが復帰せずに終了した場合、以下のreturn false;文が実行されます。

function validateHello(greetings){ 
    var hello = ['hello','ciao','salut','hallo', 'hola', 'ahoj','czesc']; 
    for(var i = 0; i < hello.length; i++){ 
     if(greetings === hello[i]){ 
      return true; 
     } 
     /* if you add a else block here. it means you want your 'else condition' to be checked in every single loop. Since 'if statement has a 'return' and 'else' statement has a 'return'. So if there is a 'else' here, no matter what condition you add , your for loop can only be executed once. */ 
    } 
    return false; // only the for loop is over and no return. this statement will be executed. 
} 
関連する問題