Was bedeutet “array.Länge -1" bedeutet in JavaScript?
Ich weiß, wie Sie die JavaScript for-Schleifen Durchlaufen arrays zum Beispiel, aber ich wusste immer noch nicht verstehen, was die array.length -1
bedeutet insbesondere die -1
Teil.
Bei der Verwendung einer for-Schleife über ein array haben wir so etwas wie dieses:
for (i = 0; i < array.length; i++) {...}
Aber ich habe auch sowas manchmal:
for (i = 0; i < array.length - 1; i++) {...}
Im zweiten Fall, warum es die "-1" in das array.Länge und was tut Sie? Auch, warum es manchmal und manchmal ist es nicht angezeigt?
- Da javascript ist null-indiziert , um eine Schleife durch ein array, können Sie entweder setzen Sie die maximal gebunden i<array.Länge ODER i<=Arrays.Länge-1
- Gut, im zweiten Fall Sie einen off-by-one-Fehler =D
- Wieso der downvote?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist zu verhindern, fencepost Fehler, auch bekannt als "off-by-one".
Gemeinsame Prüfung Frage:
Offensichtlich schnellen (und FALSCHEN) Antwort:
Weil für 100 Meter Zaun müssen Sie 101 Beiträge:
Nun mit arrays, die die gleiche Sache passiert. Lassen Sie uns sagen, es ist ein array mit 5 Elementen:
Sind Sie am Ende tut
Oops. 5 Element array ist, aber Sie haben ausgeführt, die Schleife 6-mal - ein-mal zu viel.
Können Sie beheben die Fehler in zwei Arten:
oder
i < length
undi <= length - 1
gleichwertig sindfor
immer weiter, bis Sie, dass der check-Bedingung geht falsch, also...i<=5
gilt für i=5 (array-element #6). wenn Sie mit dem Schalteri<5
dann, wenni
wird 5,i<5
wirdfalse
und die Schleife bricht ab. für Ganzzahleni<5
undi<=4
(akai<=5-1
) sind quasi identisch<= count minus 1
Variante, denn es macht klar, dass man halt an einer unterhalb der Zählung.< count
ist leicht falsch zu interpretieren. aber das ist nur eine stilistische Wahl, und daher der Meinung, und daher off-topic.Javascript-arrays sind 0-basiert, das heißt, wenn Sie ein array von 5 Elementen, die Sie verwenden würden, die die Indizes 0 bis 4, um auf Sie zuzugreifen. Sie sind eins abzieht (es sollte ein Leerzeichen zwischen '-' und '1' zu machen, mehr klar, bis zum letzten index.
Bearbeitet werden: Wenn Sie eins abzieht, sollten Sie den test '<='.
Wenn Sie Zugriff auf mehrere Indizes auf einmal Sie wollen in der Regel vermeiden Sie einen überlauf, indem Sie sicher, dass jeder index zugegriffen wird
< array.length
also, wenn Sie so etwas tun
im Allgemeinen werden Sie wollen, stellen Sie sicher, dass die höchste auftretende Wert in der
[]
ist niedriger als array.Längedann Ihren für die im oberen Beispiel würde wahrscheinlich Aussehen
welches ist der mathematisch equlivalent zu