JavaScript/Objekte/Array

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Mit dem eingebauten Konstruktor Array können Arrays erzeugt werden. Über das in der Eigenschaft prototype von Array hinterlegte Objekt wird eine Vielzahl an Methoden an alle Arrayinstanzen vererbt. Auf diese Weise wird ein Großteil der eingebauten Funktionalität für Arrays bereitgestellt. Der Konstruktor verfügt jedoch auch selbst über einige Methoden, mit denen zum Beispiel geprüft werden kann, ob es sich bei einem bestimmten Wert um ein Array handelt oder nicht.


Syntax

Array([length][...items])


Attribute
Writable true
Enumerable false
Configurable true



Inhaltsverzeichnis

Referenzierung

Der Konstruktor Array ist eine Eigenschaft des globalen Objektes, also in dem Fall, dass es sich bei der Ausführungsumgebung um einen Webbrowser handelt, eine Eigenschaft des Objektes window. Er kann aber nicht nur als Objekteigenschaft, sondern auch als globale Variable referenziert werden, die überall im Programm sichtbar ist, solange sie nicht durch eine Variable, Konstante oder Funktion mit demselben Bezeichner innerhalb der Kette der Gültigkeitsbereiche (Scope Chain) verschattet wird.


Beispiel
console.log(typeof Array); // function
 
console.log(typeof window.Array); // function
 
void function (Array) {
  console.log(typeof Array); // object
}([ ]);


Bei der ersten Prüfung mit dem Operator typeof in dem Beispiel oben wird die Zeichenkette function in die Konsole geschrieben, da hier der Konstruktor Array als globale Variable korrekt referenziert wurde. Bei der letzten Prüfung innerhalb der unmittelbar aufgerufenen Funktion wird hingegen der String object ausgegeben, da hier ein formaler Parameter mit demselben Bezeichner notiert und mit einem anderen Wert befüllt wurde. Wollte man innerhalb dieser Funktion den Konstruktor Array referenzieren, müsste man dies also über die Eigenschaft des globalen Objektes tun.

Erzeugung von Arrays

Wird Array als Funktion oder als Konstruktor aufgerufen, dann wird immer eine neue Arrayinstanz erzeugt und zurückgegeben, unabhängig vom Muster des Aufrufs. Ob und falls ja, mit welchen Elementen das erzeugte Array initialisiert wird, hängt dabei von den übergebenen Argumenten ab. Wird wie in den beiden Varianten des folgenden Beispiels kein Argument übergeben, dann wird einfach ein leeres Array zurückgegeben.


Beispiel
const keto = new Array;
 
const momos = Array( );


Hier wird Array zunächst unter Verwendung des Operators new als Konstruktor aufgerufen. Da hierbei keine Argumente übergeben werden, kann man sich die Notierung der runden Klammern nach dem Bezeichner sparen, denn der Aufruf selbst ist bereits Teil der Semantik des Operators new. Zurückgegeben wird hier ein leeres Array, ebenso wie bei dem nachfolgenden Aufruf von Array als Funktion, bei dem die runden Klammern natürlich notiert werden müssen.


Beispiel
const array = Array(3);
 
console.log(array.length); // 3
 
console.log(array[1]); // undefined


Wird Array beim Aufruf nur ein einziges Argument übergeben und handelt es sich bei dem übergebenen Wert um eine positive Ganzzahl, dann wird ein Array erzeugt und zurückgegeben, dessen Eigenschaft length den entsprechenden Wert besitzt. Die einzelnen Elemente des Arrays bleiben dabei aber undefiniert.


Hinweis

Wird als einziges Argument hingegen ein negativer Zahlenwert übergeben oder handelt es sich bei dem Wert nicht um eine Ganzzahl, dann wird ein Range Error geworfen, der das Programm unbehandelt zum Absturz bringt. Das Gleiche passiert, wenn der Wert NaN oder der Wert Infinity als Argument an Array übergeben wird. Unproblematisch ist es hingegen, eine Ganzzahl als Kommazahl zu notieren, also hinter den Wert einen Punkt und eine Null zu setzten, da Zahlen in JavaScript ohnehin als Fließkommazahlen gespeichert werden.


Da bei der Übergabe nur eines Argumentes, wenn dessen Wert vom Datentyp Number ist, immer versucht wird diesen als Wert für die Eigenschaft length des erzeugten Arrays zu setzen und dem zur Folge ein Fehler produziert wird, wenn es sich bei dem Wert nicht um eine positive Ganzzahl handelt, kann ein Array auf diese Weise nicht mit einem einzigen Element vom Datentyp Number initialisiert werden. In diesem Fall muss entweder die Methode of verwendet werden oder, wenn möglich, das Array in Literalschreibweise erstellt werden.


Beispiel
const array = new Array('Europa');
 
console.log(array.length); // 1
 
console.log(array[0]); // Europa


Wenn beim Aufruf von Array nur ein Argument übergeben wird und dieses nicht vom Datentyp Number ist, dann wird ein Array erzeugt und zurückgegeben, das den übergebenen Wert als erstes Element enthält, also an der Indexposition 0, über die der Wert entsprechend unter Verwendung der Klammersyntax referenziert werden kann.


Beispiel
const array = Array('Dione', 'Rhea', 'Tethys');
 
console.log(array.length); // 3
 
console.log(array[1]); // Rhea


Wird Array beim Aufruf mehr als ein Argument übergeben, dann werden alle übergebenen Werte als Elemente in dem neu erzeugten Array hinterlegt und der Wert der Eigenschaft length des Arrays entspricht grundsätzlich der Anzahl der übergebenen Argumente.

Verwendung

Es ist grundsätzlich nicht empfehlenswert, Arrays unter Verwendung des Konstruktors Array zu erzeugen, da es für diesen Zweck eine spezielle Syntax gibt (Array Initializer). So kann ein Array auch durch eine öffnende und eine schließende eckigen Klammer erzeugt werden, wobei die Elemente, mit denen das Array initialisiert werden soll, in Form einer Liste durch Komma getrennt dazwischen notiert werden.


Beispiel
const empty = [ ];
 
const list = ['Deimos', 'Phobos'];
 
const numbers = [5.8];


Wie die letzte Variante in dem Beispiel oben zeigt, gibt es hierbei auch keine Probleme, wenn zunächst nur ein Element in dem Array hinterlegt werden soll und dieses Element keine positive Ganzzahl ist, was beim Aufruf des Konstruktors wie gesehen einen Range Error erzeugt hätte. Es ist also anzuraten, für die Erzeugung von Arrays prinzipiell die hier gezeigte Literalschreibweise zu verwenden, oder die Methode of von Array.

Weblinks

Meine Werkzeuge
Namensräume

Varianten
Aktionen
Übersicht
Schnell‑Index
Mitmachen
Werkzeuge
Spenden
SELFHTML