2017-01-22 4 views
1

質問に対する回答の理解に問題があります。私は答えが、たとえばだろう任意の配列の最後の要素を見つけるように言われたJavascript配列の長さ混乱の問題

alert(countries[countries.length - 1]); 

はしかし、私は、私は例

のためにかけることになり、アレイのリスト全体をループに行くように言われた
for(counter=0; counter < presidents.length; counter++) { 
    document.write(presidents[counter]); 
} 

質問がある.... はなぜ前の例のようにcounter < presidents.lengthないcounter < presidents.length-1ですか?

+2

ため '<'でない '<= '、条件が場合にのみ、'カウンターまでtrueになります'大統領は長さ-1です。*( 'a

答えて

0

最後の値も印刷する必要があるためです。

例えば

、アレイであるものとする。ここで

var presidents = ["one", "two", "three", "four"]; 

presidents.length = 4
counter < presidents.length-1を入力すると、カウンタはから2になります。

あなたのいずれかがcounterは3まで0から行くようにするために
counter <= presidents.length-1またはcounter < presidents.length
を行う必要があります。

PS:JavaScriptの配列インデックスは0から始まります。

0

配列インデックスの開始位置が0で、最後の要素が(サイズ1)の位置になるためです。 forループでは、(<)以下のシンボルを使用しています。 <サイズまたは< =(サイズ-1)になります。

0

おそらく、forループが何かが起きたときに働くことに言及する価値があります。次の文を取る:あなたはcounter=0で行ったように

initialExpression

for ([initialExpression]; [condition]; [incrementExpression]) { 
 
    [statement] 
 
}
は、すぐに評価され、一般的に増分する変数を作成するために使用されます。

conditionは、が実行される前にと評価されます。条件が真実であれば、文が実行されます。そうでなければ、ループは終了する。

incrementExpressionは、が実行された後にと評価されます。したがって、ここでcounterをインクリメントすると、次のconditionの評価が通知されます。

すると一緒にそれを置く、condition評価は次のようになります。

if 0 < presidents.length // true 
 
if 1 < presidents.length // true 
 
. . . 
 
if 44 < presidents.length // true and will produce the final president element 
 
if 45 < presidents.length // false and terminate the loop