2017-01-22 2 views
1

Ich habe Probleme, eine Antwort auf eine Frage zu verstehen.Javascript Array Länge Verwirrung Problem

ich die Antwort in jedem Array das letzte Element zu finden wäre zum Beispiel gesagt wurde:

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

jedoch wurde mir gesagt, die gesamte Liste der Array gehen Schleife durch würde ich zum Beispiel setzt

for(counter=0; counter < presidents.length; counter++) { 
    document.write(presidents[counter]); 
} 

Frage ist .... Warum ist counter < presidents.length und nicht counter < presidents.length-1 wie im Beispiel vor?

+2

Weil '<' ist nicht '<=', wird der Zustand nur wahr sein, bis zu, wenn 'Zähler 'ist' presidents.length-1'.* ('a

Antwort

0

Weil Sie auch den letzten Wert drucken müssen.

Nehmen wir zum Beispiel das Array sein,

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

Hier presidents.length = 4.
Nun, wenn Sie counter < presidents.length-1 tun, dann geht Zähler von 0 bis 2.

Sie müssen entweder
counter <= presidents.length-1 oder counter < presidents.length
tun, um counter von 0 bis 3 gehen zu machen.

PS: Array-Indizes beginnen in JavaScript mit 0.

0

Da der Array-Index mit Null beginnt und das letzte Element sich in der Position (Größe 1) befindet. In der for-Schleife verwenden Sie weniger als (<) Symbol. Es wird < Größe oder < = (Größe -1) sein.

0

Wahrscheinlich auch erwähnenswert, dass die for-Schleife funktioniert, wenn Dinge passieren. Nehmen Sie die folgende Anweisung:

for ([initialExpression]; [condition]; [incrementExpression]) { 
 
    [statement] 
 
}

initialExpression wird sofort ausgewertet und wird in der Regel verwendet, um eine Variable zu erstellen zu erhöhen, wie Sie mit counter=0 tat.

condition wird ausgewertet vor Ausführung der Anweisung. Wenn die Bedingung truthy ist, wird die Anweisung ausgeführt; Wenn nicht, wird die Schleife beendet.

incrementExpression wird ausgewertet nach Ausführung der Anweisung. Also, inkrementieren counter hier informiert die nächste condition Auswertung.

setzen sie zusammen, sieht die condition Auswertung wie folgt aus:

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