2017-03-16 20 views
-4

"head first javascript programming"と呼ばれる本を使って作業していますが、この練習例に入りましたが、その一部をあまり理解していません。コンソールでは、テストの量と最高得点が表示されるようになっています。ここにコードがあります。if/forループの部分を理解できません

var scores = [60,58,34,69,46,41,50,50,55,64,31,53,60,52,51,66,57,55,58,54,52,55,52,61,54,48,44,52,44,51,54,69,51,61,18,44]; 
var output; 
var highScore = 0; 



for(var i = 0; i < scores.length; i++){ 
    output = "Bubble solution #" + i + " score: " + scores[i]; 
    console.log(output); 
    if (scores[i] > highScore){ 
    highScore = scores[i]; 
    } 
} 

console.log("Bubbles tests: " + scores.length); 
console.log("Highest bubble score: " + highScore); 

は今、このコードでは、作業を行いますが、私はここに次の2行を理解していない:

scores[i] > highScore 
highScore = scores[i] 
+1

これは...正確にわからないのですか?代入とより大きい演算子はどのように機能しますか? – Siguza

+2

書籍のタイトルが暗示しているように、頭を悩ませてダイビングすることの問題は、あなたがスマートな解決策を見逃していることです。あなたは 'scores.length'を持っています。手作業でのループやチェックなどの代わりに、' Math.max.apply(null、scores) 'を使って高得点を得るのはなぜですか? –

+1

@NiettheDarkAbsol私は、本書のこの部分がさまざまなタイプのようなループについて説明していると思いますが、これを簡単な例として使用しています。私たちが知っているように、よりスマートな解決策は、jQueryを使用することです。_sarcasm_ – George

答えて

4

目標は最高で何のスコアを知ることです。

if (scores[i] > highScore){ 
    highScore = scores[i]; 
    } 

このように、各スコアについて反復しながら。現在の反復スコアがhighScoreより高いかどうかを確認します。そうであれば、最高スコアを現在のスコアで更新します。

反復1

scores[i] = 60 
highscore = 0 
--> highScore = 60 

反復2

scores[i] = 58 
highscore = 60 
--> highscore = 60 
1
​​

これは、最高のスコアを格納するための論理です。

各反復で、それぞれ、HighScoreは、現在の反復でscoreと比較されます。

現在のスコアがHighScoreより大きい場合、スコアはHighScore変数に割り当てられます。

1

forループを使用して、リストのすべての要素を処理します。リストを通過しながら、0

にハイスコアを初期化開始時に

現在の要素の値がハイスコアに格納されている値よりも大きい場合は、そのループの終わりにその要素の値にハイスコアを割り当て、値highScore変数に格納されている値は、スコアリストから最大値になります。

Ex。

if(69 > 60) // which is true 
    highScore = 69; // so the value of highScore becomes 69 

: 第一ループ反復では

if(58 > 60) // which is not true 
    highScore = 58; // so the value of highScore will stay 60 

第三反復

if(34 > 60) // which is not true 
    highScore = 34; // so the value of highScore is still 60 

第4回反復第二反復

if(60 > 0) // which is true 
    highScore = 60; // so assign value 60 to variable highscore 

になります。 。 。リストの最後まで など。

基本的にスコアリストから最大値を得て、それをhighScore変数に保存します。

最後にhighScoreの値は69になります。

関連する問題