Suchen Array Länge in Javascript

7

Das wird eine sehr dumme Frage klingen. Wie können wir die genaue Länge des Arrays in JavaScript finden? Genauer möchte ich die gesamten Positionen im Array finden.

Ich habe ein einfaches Szenario, von dem ich denke, dass es den meisten von euch vielleicht bewusst ist.

%Vor%

Wenn ich jetzt

gebe %Vor%

Ich möchte die genaue Größe des Arrays erhalten, das im obigen Fall 4 sein sollte.

    
Yameen 02.03.2015, 14:13
quelle

4 Antworten

17

Damit erhalten Sie die Anzahl der tatsächlich in Ihrem Array vorhandenen Elemente:

%Vor%

Ссылка

Bearbeiten

Wie in Kommentaren von JLRishe gezeigt, gibt Object.keys (a) .length die Anzahl der im Objekt a vorhandenen Schlüssel zurück. Wenn ich einen Schlüssel wie folgt hinzufüge:

%Vor%

dann      Object.keys (a) .length gibt 4

zurück

aber "key" ist kein Teil des Arrays, es ist eine Eigenschaft des Array-Objekts, console.log (a) gibt Ihnen [1,2,3].

Um einen zuverlässigeren Wert für die Anzahl der Elemente in einem Array zu erhalten, müssen wir nur positive ganzzahlige Schlüsselwerte zählen:

%Vor%

Object.keys gibt ein Array von String zurück. Die Zuweisung eines Wertes in einem Array mit a['1'] oder a[1] ist äquivalent. Array-Index-Schlüssel müssen auch kleiner als 2 ^ 32 sein.

    
Gael 02.03.2015, 14:20
quelle
3

TL; DR Der einfachste zuverlässige Ansatz, den ich mir vorstellen kann, ist folgender:

%Vor%

In modernen JavaScript-Engines könnte dies wie folgt verkürzt werden:

%Vor%

Volle Antwort:

Die Überprüfung gegen undefined ist nicht genug, weil das Array tatsächlich undefined -Werte enthalten könnte.

Zuverlässige Wege, die Anzahl der Elemente zu finden, sind ...

Verwenden Sie den Operator in :

%Vor%

benutze .forEach() (was grundsätzlich in unter der Haube benutzt):

%Vor%

oder verwenden Sie .filter() mit einem Prädikat, das immer wahr ist:

%Vor%
    
JLRishe 02.03.2015 14:19
quelle
0

Die Größe des Arrays entspricht genau der Eigenschaft length.

Obwohl Sie nur einen Wert für die ersten drei Positionen (0,1,2) angegeben haben, haben Sie den Wert 100 auf a [100] geändert und die Größe auf 101 Positionen geändert. Daher erhalten Sie die Anzahl jeder Position von 0 (erster Index) bis 100 (letzter Index), auch wenn sie keinen Wert haben.

    
Caio César S. Leonardi 02.03.2015 14:25
quelle
0

Mit Ihrem Code: a[100] = 100 erstellen Sie einen Block an Position 100 in Ihrem Array. (Insgesamt 101, da es bei 0 beginnt).

Wenn Sie sehen möchten, wie viele tatsächliche Antworten sich im Block befinden, müssen Sie eine Schleife verwenden und zyklisch prüfen, welche Felder ungleich undefiniert sind. Es gibt Dutzende Möglichkeiten, dies mit for , while , foreach usw. zu tun.

Implementieren Sie einfach einen Zähler und zählen Sie die Abschnitte im Array, die nicht gleich null oder undefined sind. Dadurch erhalten Sie die Anzahl der Orte, die tatsächlich im Array verwendet werden.

    
jscroggs 02.03.2015 14:28
quelle

Tags und Links