2017-09-29 25 views
2

Diese Frage ist eher ein warum funktioniert dieser bestimmte Code auf diese Weise als wie kann ich diesen Code auf diese Weise arbeiten lassen.Wie protokolliert man einen Index eines Arrays in JavaScript?

Ich gehe durch die Codecademy Tutorials für JavaScript und ich stieß auf eine Lektion, die ich konzeptuell in meinem eigenen Code verwenden kann, weil ich das Muster dieses bestimmten Codes sehen kann - aber es macht keinen Sinn, warum dieser Code funktioniert so.

Unten ist ein Beispiel:

let myArray = ['First','Second','Third']; 
var last = myArray[myArray.length - 1]; 
console.log(last); 

Die Konsole zeigt "Dritte", wenn Sie den obigen Code ausgeführt wird. Ich weiß, dass die JavaScript-Sprache eine "Null indexierte" Sprache ist und ich weiß, dass "zuerst" in diesem Array Position "0" von links nach rechts zählt, aber meine Frage ist, selbst wenn wir bei "0" beginnen und jedes Element zählen; 0 dann 1 dann 2; sollte nicht die Konsole "Second" anstelle von "Third" loggen? Oder ignoriert die Methode der "Länge" in JavaScript das "0" -basierte Indexierungssystem und beginnt tatsächlich bei "1" zu zählen; In diesem Fall sollte die Antwort STILL "Second" sein und nicht "Third" ... Egal, wie mein Gehirn dies addiert Ich bekomme "Second" statt "Third" in meinem Kopf, obwohl die Ausgabe ist "dritte" auf der Konsole ...

Kann mir jemand erklären, was ich vermisse?

+0

wissen, dass 'myArray.length - 1 == 2' ... jetzt was denkst du ... die Länge ist die Länge, die 3 ... nicht 2 ist, denn es gibt 3 Elemente ... die Index ist Null basiert, die Länge ist ... nun, die Länge –

+0

Index: '0, 1, 2' hat immer noch die Länge von' 3' –

Antwort

3

Probieren Sie diesen Code aus und es wird Ihnen helfen. Dieses Zeug war auch für mich schwierig. Es benutzt nur eine Variable und berechnet sie gleichzeitig.

let myArray = ['First','Second','Third']; 
var last = myArray[myArray.length - 1]; 
console.log(last); 

Zuerst müssen wir feststellen, dass myArray.length 3 ist, weil es drei Elemente darin.

Zweitens können wir jetzt wieder analysieren diesen Austausch aber myArray.length mit 3:

myArray[3 - 1] 

Jetzt können Sie sehen, es ist einfach 3-1 ist die Berechnung, die 2 ist, so dass der Code ist identisch mit:

myArray[2] // which returns the item at position 2 (starting from 0), [0, 1, 2] 
+0

ok ich sehe, ja das macht Sinn Ich denke, mein Problem war, dass ich konzeptionell versuchte, eine Antwort zu bekommen, ohne sie in zwei separate Schritte zu zerlegen (wie in deinem Beispiel). Jetzt sehe ich es deutlich. THANKYOU – Ghoyos

+1

Manchmal ist es auch schwierig, ähnliche Objekteigenschaften zu sehen. Sie könnten 'Objekt sehen.name', oder du siehst 'object ['name']' und wo es schwierig wird, siehst du manchmal Variablen darin, wie 'object [something1 + something2]', das "verkettet" (dh: zwei Dinge zusammenschmeißen) Also ist es eigentlich "object.something1something2". Diese erscheinen typischerweise als "object ['some some' + i]" (wobei "i" eine Iterator-Nummer ist, die nach oben geht). – agm1984

+1

Hinweis: Sie können auch 'myArray.indexOf ('Third')' verwenden, um die Position des gewünschten Objekts zu finden. – agm1984

2

array.length ist eine reihe von einzelteilen, es gibt 3 artikel. Aber Array-Indizes beginnen bei 0 und der letzte Index ist 2, nicht 3. Wenn Sie Array-Elemente mit array.length abrufen möchten, müssen Sie diese Länge um 1 verringern, wenn Sie das letzte Element erhalten möchten, und um 2, wenn Sie möchten um den vorherigen zu bekommen und so weiter.

+0

@Ghoyos, du bist willkommen –

2

Array.length gibt die Anzahl der Elemente in einem Array. Es hat keinen Einfluss auf den Index.

Länge - 1 wird immer der letzte Index im Array sein, einfach weil Arrays in der Praxis 0 indiziert werden.

Verwandte Themen