2016-06-02 7 views
-3

kann ich bitte wissen, warum, wenn eine zweite Ebene Eintrag in einem multidimensionalen Javascript-Array undefined zurückgegeben wird, wenn diese Ebene Länge ist gleich 1?
Beispiel:Index 0 in der zweiten Ebene Javascript Arrays

arr = Array(
    Array(1) 
) 

Folgendes wird dies unwahrscheinlich Ergebnis zurück: undefined, während es 1 sein annehmen (oder zumindest das ist, was ich es erwarten)

console.log(arr[0][0]) 

aber wenn Ich habe mehr als nur einen Datensatz in dieser Ebene (length>1) etwas wie:

arr = Array(
    Array(1,2) 
) 

und dann versuchen Sie zu: console.log(arr[0][0]), es gibt diesmal 1 zurück.
eine Erklärung für dieses Problem oder warum ist das passiert
dank

+0

Chill Mann Sie bekommen Down-Stimmen hier auch wenn Sie die Fragen perfekt beantworten, aber ein Passant hasst nur Ihre Einrückung oder etwas. Das passiert die ganze Zeit. Sie können es nicht mit neuen Konten umgehen. In JS instanziierte Arrays werden nicht initialisiert, daher sind die Anfangswerte nicht definiert. Sie müssen eine 'Array.prototype.fill()' zum Beispiel ketten, wenn Sie sie anfänglich ausfüllen müssen. – Redu

+1

Es mag drei Leute gegeben haben, die dachten, dass Sie vorher eine Dokumentation hätten lesen sollen.Aber es ist verständlich, dass dieses Verhalten verwirrend ist, weshalb die Verwendung von 'Array' im Allgemeinen vermieden wird. –

Antwort

0

Sie sollten die documentation of the Array constructor geschätzt würde konsultieren:

arrayLength
Wenn das nur an den Array Konstruktor übergeben Argument ein ist Ganzzahl zwischen 0 und 232-1 (einschließlich), dies gibt ein neues JavaScript-Array mit length zurück, das auf diese Zahl gesetzt ist.

Array(1) nicht ein Array mit dem Element 1 erstellen, erstellt er eine Anordnung von Länge 1 mit einem Element: undefined.

auf einen weniger mehrdeutigen Konstruktor haben, verwenden ein Array literal:

[[1]] 

Dies ist eine Anordnung, die eine Anordnung enthält, die den Wert enthält 1.

+0

danke, ich werde über diese Dokumentation in den Link lesen, (danke für die Abstimmung unten) –

+0

Nicht sicher, warum das war downvoted: -/ –

+1

@Simo: Warum gehen Sie davon aus, dass deceze Ihre Frage downvoted? Leute, die sich herabsetzen, neigen normalerweise nicht dazu, die Frage zu beantworten ... Wenn du deine Antwort herabstimmst, dann ist das ein wirklich schlechter Zug von deiner Seite. Nachdem alle Leute, die geantwortet haben, versucht haben, dir zu helfen ... –

0

Syntax für Array

[element0, element1, ..., elementN] 
new Array(element0, element1[, ...[, elementN]]) 
new Array(arrayLength) 

von Syntax Abschnitt auf https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array

Sein aussehen, wenn der aregument zu Array ist eine ganze Zahl ist, dann ist es als Länge interpretiert, sonst interpretiert als Inhalt

Aus diesem Grund haben Sie eine leere 2-d-Array auf dem ersten Fall ..

Hope this helps .. prost

Verwandte Themen