/ / Wie funktioniert ein Array in Javascript - Javascript, Arrays, Linked-List

Wie funktioniert ein Array eigentlich in Javascript - Javascript, Arrays, Linked-List

Ich hoffe, meine Frage ist nicht so dumm. Aber ich habe mich gefragt, wie Arrays tatsächlich in Javascript funktionieren. Ein Element speziell nach Index abrufen.

Nehmen wir an, ich habe ein Array mit dem Namen myFirstArraymit den Elementen [1,2,3,4]. Wie funktioniert es, wenn ich myFirstArray [3] eingebe, um das vierte Element aus diesem Array zu erhalten? Wird es durchgeschleift? Jedes Mal, wenn ich das letzte Element eines Arrays möchte, durchläuft es das gesamte Array?

Gleiches gilt für das Hinzufügen eines Elements zu einem Array. Durchläuft es immer das Array und findet das letzte Element im Array?

Ich frage, weil ich eine LinkedList in Javascript implementiert habe und mich frage, ob sie effizienter ist als ein normales Array.

Antworten:

3 für die Antwort № 1

Die Implementierung von Arrays in Javascript unterscheidet sich ein wenig von der Implementierung in den meisten anderen Sprachen.

Ein Array ist nicht nur eine Liste von Elementen, sondern esist ein assoziatives Array. Elemente werden nicht nacheinander gespeichert, sondern als diskrete Schlüssel-Wert-Paare. Wenn Sie beispielsweise Werte an den Indexen 3 und 5 einfügen, enthält das Array keine undefinierten Elemente, um die Lücken zu füllen, sondern nur die eingestellte Werte.

Mit Code wie diesem:

var a = [];
a[3] = 1;
a[5] = 2;

Die im Array gespeicherten Daten sehen nicht so aus:

[ undefined, undefined, undefined, 1, undefined, 2 ]

Es sieht eher so aus:

{
"3": 1,
"5": 2,
"length": 6
}

Die Elemente in dem Array werden als Eigenschaften in dem Array-Objekt gespeichert. Es ist lediglich so, dass das Array Eigenschaften mit einem numerischen Schlüssel auf besondere Weise behandelt, d. H length Eigentum, wenn nötig.

Die Implementierung der Schlüsselwerterfassung istDer Zugriff auf ein Element erfolgt über eine Hash-Tabelle (oder, abhängig von der Javascript-Engine, über etwas noch Effizienteres), sodass der Zugriff auf ein Element einer O (1) -Operation nahe kommt, d.


1 für die Antwort № 2

Wie der Array-Zugriff erfolgt, hängt von der JavaScript-Engine selbst ab und kann daher von Engine zu Engine unterschiedlich sein.

Ich würde allerdings vermuten, dass Arrays immer noch Blöcke sindSpeicher in den meisten Motoren. Wenn Sie auf ein Element zugreifen, wird das Array nicht durchkreist. Vielmehr wird die Speicheradresse für dieses bestimmte Element berechnet (memory_offset_of_the_first_element + size_of_element * desired_index) und dann kann das Element von dort gesammelt werden. Einfügungen und Löschungen sind komplexer und teurer. Im schlimmsten Fall muss das gesamte Array kopiert und angepasst werden.

Lamar Für einen guten Überblick sorgte in Wann sollte eine verknüpfte Liste über eine Array- / Array-Liste verwendet werden?.


1 für die Antwort № 3

Im Javascript es gibt standardmäßige eingebaute Objekte und eines dieser Objekte ist Array. Array ist ein globales Objekt auf hoher Ebene und wird als Konstruktor für Arrays verwendet.

Array-Elemente sind Objekteigenschaften das kann durch Klammer Notation zugegriffen werden. In anderen Sprachen würden Sie Javascript-Arrays als bezeichnen spärliche Arrays (Ex: Wolfram).