Arrays werden in verschiedenen Sprachen sehr unterschiedlich gehandhabt, seien Sie also vorsichtig, wenn Sie Array in anderen Sprachen lernen.
Was ist ein Array? (Zuerst ein kurzer Überblick)
Ich werde später mehr dazu sagen, aber zuerst sehen wir uns kurz an, was ein Array ist.
Angenommen, Sie haben einige experimentelle Daten, die Sie verarbeiten (berechnen) müssen. Sie haben nun z. B. 100 Daten und Sie haben folgendes geschrieben:
let data1 = 0.10;
let data2 = 1.2;
let data3 = 3.2;
:
:
let data100 = 1.1;
Um die Summe zu erhalten, müssen Sie folgendes schreiben:
let sum = data1 + data2 + (omit) + data100;
Sehr umständlich!
Wenn Sie zusätzliche Daten erhalten, müssen Sie das Folgende hinzufügen
let data101 = 0.92;
let data102 = 5.8;
let data103 = 7.2;
:
:
und auch das Programm ändern. Dies ist immer noch einfach, da es sich nur um eine einfache Summe handelt, aber kompliziertere Berechnungen (wie die Berechnung der Varianz) werden viel umständlicher sein. Es kann sogar schneller sein, sie von Hand zu berechnen.
An dieser Stelle kommen Arrays ins Spiel. Die erhaltenen Daten können wie folgt geschrieben werden:
let data = [ 0.10, 1.2, 3.2, ... ];
In diesem Fall können die einzelnen Daten als data[0]
, data[1]
, … verwendet werden.
Das obige Programm zur Ermittlung der Summe kann theoretisch wie folgt umgeschrieben werden
let sum = data[0] + data[1] + (omit) + data[99];
aber noch viel besser:
let sum = 0;
for (let i = 0; i < data.length; i++) {
sum += data[i];
}
(data.length
wird später in diesem Artikel behandelt).
Wenn sich die Anzahl der Daten oder der Inhalt des Arrays data
ändert, muss sich der Summierungsteil überhaupt nicht ändern.
Dadurch wird das Programm kürzer und damit lesbarer.
Also: ein Array ist eine Sammlung von Daten (Werten).
Wie man Arrays verwendet
Schauen wir uns die Arrays genauer an.
Definition eines Arrays
Um ein Array zu definieren wird es, wie Sie im obigen Beispiel sehen können, wie folgt geschrieben:
let data = [ 10, 20, 30 ];
Die linke Seite ist die gleiche wie die bisherige Definition der Variablen. Die rechte Seite ist die Art und Weise, wie man ein Array schreibt. Die Daten werden in eckigen Klammern, getrennt durch Kommata, angegeben. Jede Angabe (in diesem Fall 10, 20 usw.) wird als Element des Arrays (bzw. Arrayelement) bezeichnet.
Sie können die Deklaration und die Initialisierung auch separat schreiben (wie bei einer normalen Variable).
let data;
data = [ 10, 20, 30 ];
In JavaScript ist es möglich, den ganzen Inhalt eines Arrays mit
console.log()
anzuzeigen.
Geben Sie das folgende Programm ein und führen Sie es aus.
let data = [ 10, 20, 30 ];
console.log(data);
Verwendung von Elementen eines Arrays
Um mit einzelnen Elementen eines Arrays zu arbeiten, verwenden Sie den
Variablennamen + [ + Zahl + ], wie in data[1]
.
Diese Zahl wird als Index bezeichnet.
Arrays von JavaScript werden von 0 an indiziert.
Um das erste Element anzuzeigen, verwenden Sie daher console.log(data[0])
.
Geben Sie das folgende Programm ein und führen Sie es aus.
let data = [ 10, 20, 30 ];
console.log(data);
console.log(data[0]);
console.log(data[1]);
console.log(data[2]);
Wie man die Anzahl der Elemente (Länge) eines Arrays bestimmt
Die Anzahl der Elemente in einem Array wird oft als Länge
bezeichnet.
Die Länge eines Arrays kann mit array-name.length
ermittelt werden.
Zum Beispiel:
let data = [ 1, 2, 5 ];
console.log(data.length);
Wenn Sie dieses Programm ausführen, wird als Ergebnis 3 angezeigt.
Beachten Sie, dass array.length
die Anzahl der Elemente im Array ist.
Andererseits ist zu beachten, dass der letzte Index eines Arrays array.length - 1
ist.
Wenn Sie die Summe eines Arrays berechnen wollen, können Sie schreiben:
let data = [ 1.2, 3, 5, 1.1 ];
let sum = 0;
for (let i = 0; i < data.length; i++) {
sum += data[i];
}
Beachten Sie, dass <
für die Bedingung der for
-Schleife verwendet wird, nicht <=
.
Vielleicht möchten Sie Folgendes schreiben, aber das ist unerwünscht:
let data = [ 1.2, 3, 5, 1.1 ];
let sum = 0;
// ! Kein Fehler, aber vermieden werden soll !
for (let i = 1; i <= data.length; i++) {
sum += data[i - 1];
}
oder
let data = [ 1.2, 3, 5, 1.1 ];
let sum = 0;
// ! Kein Fehler, aber das soll vermieden werden !
for (let i = 0; i <= data.length - 1; i++) {
console.log(data[i]);
}
Sie sollten sich daran gewöhnen, for (let i = 0; i < data.length; i++)
zu schreiben.
Außerdem dürfen Sie die Anzahl der Daten nicht direkt in das Programm eingeben:
for (let i = 0; i < 4; i++) { // ! schlechter Schreibstil !
sum += data[i];
}
Dies ist syntaktisch nicht falsch, aber die direkte Angabe der Anzahl
von Elementen im Programm in Form von einer konkreten Zahl (eine
solche Schreibweise wird als Hartkodierung
(eng. hard
coding) bezeichnet) ist ein Nährboden für Fehler.
Wenn sich also die Anzahl der Elemente im Array ändert, muss nicht nur
das Array selbst, sondern auch die for-Schleife geändert werden.
Aber Sie sollten nur die Daten ändern müssen, wenn sich die Anzahl der
Daten ändert.
.length
, um die Länge eines Arrays zu
ermitteln.
Geben Sie das folgende Programm ein und führen Sie es aus.
let data = [ 10, 20, 30 ];
console.log(data);
console.log(data.length);
for (let i = 0; i < data.length; i++) {
console.log("data[", i, "] =", data[i]);
}
Geben Sie das folgende Programm ein und führen Sie es aus.
let data = [ 10, 20, 30 ];
console.log(data);
console.log(data.length);
let sum = 0;
for (let i = 0; i < data.length; i++) {
sum += data[i];
}
console.log(sum);
-
Geben Sie das folgende Programm ein und führen Sie es aus.
// ! Schlechte Schreibweise ! let data = [ 10, 20, 30 ]; console.log(data); console.log(data.length); let sum = 0; for (let i = 0; i < 3; i++) { sum += data[i]; } console.log(sum);
-
Geben Sie zusätzliche Daten in
data
in der 3. Zeile ein, zum Beispiel:let data = [ 10, 20, 30, 40 ];
und ändern Sie das Programm, damit die Summe aller Elemente des Arrays berechnet wird (d. h. wenn Sie 40 als neues Element hinzufügen, sollten Sie 100 als Endergebnis erhalten).
-
Überlegen Sie, warum dies keine gute Art zu schreiben ist.
Hinweis zur Initialisierung eines Arrays
Wie bereits erläutert, ist es in Ordnung, Folgendes zu schreiben:
let data;
data = [ 1, 2, 3 ];
Aber so kann man es nicht schreiben:
let data;
data[0] = 1.2;
Wenn Sie es unbedingt auf diese Weise schreiben möchten, müssen Sie zuerst ein leeres Array erstellen. Das heißt, Sie müssen z. B. wie folgt schreiben:
let data = []; // data ist ein (leeres) Array
data[0] = 1.2;
(Fortgeschrittene) Kopieren eines Arrays
Obwohl dies etwas kompliziert ist, wird das Folgende hier erklärt, weil man oft Fehler macht.
Seien Sie vorsichtig, wenn Sie von Kopieren eines Arrays
sprechen.
Wenn Sie eine Kopie eines Arrays erstellen möchten und das Folgende
schreiben, werden Sie wahrscheinlich nicht das erwartete Ergebnis
erhalten.
let array1 = [1, 2, 3];
let array2 = array1;
Sie könnten wie folgt schreiben, um das erste Element von array1
zu
ändern:
array1[0] = 2;
Mal sehen, was hier passiert.
let array1 = [1, 2, 3];
let array2 = array1;
console.log("Initial values");
console.log(array1);
console.log(array2);
array1[0] = 2;
console.log("After change");
console.log(array1);
console.log(array2);
Man würde erwarten, dass nur array1
geändert wird, also dass man
[2, 2, 3]
[1, 2, 3]
erhält, aber in Wirklichkeit wurde auch array2
geändert.
Was ist hier eigentlich los?
In Bezug auf das Whiteboard bedeutet dies, dass ein zusätzlicher Name auf dem Whiteboard für das Array vergeben wurde1.
Um ein Array zu kopieren, müssen Sie daher zunächst ein neues Array erstellen und dann die Elemente einzeln kopieren. Es gibt mehrere Möglichkeiten, eine Kopie eines Arrays zu erstellen, aber ich zeige Ihnen nur die einfachste Methode.
let array1 = [ 1, 2, 3 ];
let array2 = [];
for (let i = 0; i < array1.length; i++) {
array2[i] = array1[i];
}
Überlegen Sie, was passiert (angezeigt wird), wenn Sie das folgende Programm ausführen. Versuchen Sie dann, ihn auszuführen. Vergleichen Sie sie mit der obigen Übung und stellen Sie die Unterschiede fest.
let array1 = [ 1, 2, 3 ];
let array2 = [];
for (let i = 0; i < array1.length; i++) {
array2[i] = array1[i];
}
console.log("Initial values");
console.log(array1);
console.log(array2);
array1[0] = 2;
console.log("After change");
console.log(array1);
console.log(array2);
Typisierte Arrays (Typed Arrays)
In JavaScript gibt es typisierte Arrays (eng. typed arrays). Die wichtigsten davon ist Float64Array (und Float32Array) 2. Es gibt noch andere typisierte Arrays, die Integer speichern, aber diese werden hier nicht beschrieben.
Arrays, die bereits erwähnt wurden, sind sehr flexibel (sie können z. B. sowohl Zeichenketten als auch Zahlen speichern), aber sie können auch langsam sein, wenn die Anzahl der Elemente groß ist.
Typisierte Arrays können nur bestimmte Typen speichern (in diesem Fall reelle Zahlen), aber sie können schneller sein als normale Arrays, wenn die Anzahl der Elemente groß ist.
Konkret deklarieren Sie sie wie folgt:
let data = new Float64Array(3); // Erstellen eines Arrays mit 3 Elementen
Das ist eine ganz andere Schreibweise, die Sie vielleicht verwirrt, aber akzeptieren Sie einfach, dass wir dies so schreiben werden. (Sie müssen etwas über Objektorientierung wissen, wenn Sie dies genau erklären möchten.)
Alle Elemente des Arrays werden auf 0 initialisiert.
Das bedeutet, dass die obige Anweisung ein Array [0, 0, 0]
erzeugt.
Nach der Erstellung kann die Länge (Anzahl der Elemente) des Arrays
nicht mehr geändert werden.
Ansonsten ist es so ziemlich dasselbe wie ein normales Array.
Wenn Sie ein typisierte Array gleichzeitig deklarieren und initialisieren möchten, können Sie das wie folgt schreiben:
let data = new Float64Array([ 1.0, 2.1, 3.3 ]);
Nämlich wird ein Array als Argument angegeben.
Vergessen Sie nicht, die eckige Klammern [
]
einzutippen.
Es ist vielleicht leichter zu verstehen, wenn Sie Folgendes bedenken:
let data0 = [ 1.0, 2.1, 3.3 ];
let data = new Float64Array(data0);
// Im obigen Beispiel wurde das Array direkt als Argument geschrieben,
// nicht über eine Variable.
Dies funktioniert ohne Problem, erfordert aber eine zusätzliche
Variable (data0
), so dass es besser ist, die erste Schreibweise zu
verwenden.
Teilzusammenfassung: Float64Array
// ein Array mit 3 Elementen erstellen (Alle Anfanswerte sind 0)
let data = new Float64Array(3);
// ein Array mit 3 Elementen, deren Anfanswerte 1, 2 und 3 sind, erstellen
let data = new Float64Array([ 1, 2, 3 ]);
Funktionen und Arrays
In JavaScript können Sie Arrays als Argumente und Rückgabewerte von Funktionen verwenden.
Es folgt ein Beispiel für eine Funktion, die ein Array als Argument verwendet (der Rückgabewert in diesem Beispiel ist eine normale Zahl).
function sumarray(arr) {
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
let data = [ 10, 20, 30 ];
console.log(sumarray(data));
Geben Sie dieses Programm ein und führen Sie es aus.
Übungen
Machen Sie die folgenden Übungen zur Wiederholung. Es ist anzuraten, dass Sie zumindest die erste Übung durchführen.
Schreiben Sie eine Funktion, die ein Array als Argument nimmt, seinen
Mittelwert berechnet und ihn zurückgibt.
Geben Sie auch data = [ 71, 80, 89 ]
als Daten ein und verwenden Sie
diese Funktion, um den Mittelwert dieser Daten zu berechnen.
Schreiben Sie eine Funktion, die ein Array als Argument nimmt, seine
Varianz berechnet und sie zurückgibt.
Geben Sie auch data = [ 71, 80, 89 ]
als Daten ein und verwenden Sie
diese Funktion, um die Varianz dieser Daten zu berechnen.
Zusammenfassung
Auf dieser Seite haben Sie über Arrays gelernt.
-
Ein Array ist eine Sammlung von Daten.
-
Ein Array kann definiert werden als
let data = [ 1, 2, 3 ];
usw. -
Jedes Element kann durch einen Index angegeben werden.
-
Array-Indizes beginnen bei 0.
-
Die Anzahl der Elemente in einem Array kann als
array.length
ermittelt werden. -
Es gibt auch ein typisiertes Array namens
Float64Array
. Dies ist vorteilhaft, wenn die Anzahl der Elemente groß ist.
Diese Erklärung ist nicht ganz korrekt. Es erfordert etwas mehr Wissen, um genau zu wissen, was es ist, also lassen wir es dabei.
Float bedeutet eine Fließkommazahl, und 64 (und 32) bedeutet, dass der Wert durch 64 (und 32) Bits dargestellt wird. Kurz gesagt, die 64-Bit-Darstellung kann einen größeren Bereich von Zahlenwerten darstellen.