JavaScript-Array
- Vorherige Seite JS-Zahlenattribute
- Nächste Seite JS-Arraymethoden
JavaScript-Arrays werden verwendet, um mehrere Werte in einer einzigen Variable zu speichern.
Was ist ein Array?
Ein Array ist ein spezieller Variable, der mehr als einen Wert aufnehmen kann.
Wenn Sie eine Projektliste (z.B. eine Liste von Automobilmarken) haben, sollten Automobilmarken in einer einzigen Variable so gespeichert werden:
var car1 = "Saab"; var car2 = "Volvo"; var car3 = "BMW";
Was ist aber, wenn Sie alle Autos durchsuchen und einen bestimmten Wert finden möchten? Was ist, wenn nicht drei Automobilmarken, sondern dreihundert?
Die Lösung ist ein Array!
Ein Array kann viele Werte speichern und diese durch Bezugnahme auf die Indexnummer abrufen.
Array erstellen
Die Verwendung von Array-Text ist die einfachste Methode, um JavaScript-Arrays zu erstellen.
Syntax:
var array-name = [item1, item2, ...];
Beispiel
var cars = ["Saab", "Volvo", "BMW"];
Leerzeichen und Zeilenumbrüche sind unwichtig. Die Deklaration kann über mehrere Zeilen hinweg erfolgen:
Beispiel
var cars = [ "Saab", "Volvo", "BMW" ];
Bitte schreiben Sie kein Komma nach dem letzten Element (z.B. "BMW",).
Es können Probleme mit der Cross-Browser-Kompatibilität auftreten.
Verwenden Sie das JavaScript-Schlüsselwort new
Der folgende Beispiel erstellt auch ein Array und weist ihm Werte zu:
Beispiel
var cars = new Array("Saab", "Volvo", "BMW");
Diese beiden Beispiele haben gleiche Wirkung. Es ist nicht erforderlich, new Array()
.
Aus Gründen der Klarheit, Lesbarkeit und Ausführungszeit verwenden Sie bitte die erste Methode (Array-Textmethode).
auf Array-Elemente zugreifen
Wir beziehen uns durchIndexnummer (Unterschrift)um auf ein bestimmtes Array-Element zu verweisen.
Diese Anweisung ruft den Wert des ersten Elements in cars ab:
var name = cars[0];
Diese Anweisung ändert das erste Element in cars:
cars[0] = "Opel";
Beispiel
var cars = ["Saab", "Volvo", "BMW"]; document.getElementById("demo").innerHTML = cars[0];
[0] ist das erste Element im Array. [1] ist das zweite. Die Array-Indizes beginnen bei 0.
Ändern Sie das Array-Element
Diese Anweisung ändert den Wert des ersten Elements in cars:
cars[0] = "Opel";
Beispiel
var cars = ["Saab", "Volvo", "BMW"]; cars[0] = "Opel"; document.getElementById("demo").innerHTML = cars[0];
Vollständiges Array aufrufen
Durch JavaScript kann das vollständige Array über den Namen des Arrays referenziert werden:
Beispiel
var cars = ["Saab", "Volvo", "BMW"]; document.getElementById("demo").innerHTML = cars;
Array ist ein Objekt
Ein Array ist ein spezieller Typ von Objekt. In JavaScript wird mit Arrays typeof
Der Operator gibt "object" zurück.
Aber die JavaScript-Arrays sind besser als Arrays zu beschreiben.
ArrayverwendungZahlenum auf ihre "Elemente" zuzugreifen. In diesem Beispiel,person[0]
Rückgabe von Bill:
Array:
var person = ["Bill", "Gates", 62];
Objekte verwendenNameum auf ihre "Mitglieder" zuzugreifen. In diesem Beispiel,person.firstName
Rückgabe von Bill:
Objekt:
var person = {firstName:"Bill", lastName:"Gates", age:19};
Arrayelemente können Objekte sein
JavaScript-Variable können Objekte sein. Arrays sind ein spezieller Typ von Objekt.
Daher können Sie in einem Array verschiedene Datentypen speichern.
Sie können Objekte in einem Array speichern. Sie können Funktionen in einem Array speichern. Sie können sogar Arrays in einem Array speichern:
myArray[0] = Date.now; myArray[1] = myFunction; myArray[2] = myCars;
Array-Attribute und -Methoden
Die wahre Stärke der JavaScript-Arrays liegt in ihren Attributen und Methoden:
Beispiel
var x = cars.length; // Das length-Attribut gibt die Anzahl der Elemente zurück var y = cars.sort(); // Die sort()-Methode sortiert das Array
Wir werden im nächsten Kapitel die Arraymethoden lernen.
length-Attribut
length
Das Attribut gibt die Länge des Arrays (Anzahl der Arrayelemente) zurück.
Beispiel
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.length; // Die Länge von fruits beträgt 4
length
Das Attribut ist immer größer als der höchste Arrayindex (Index).
Zugriff auf das erste Arrayelement
Beispiel
fruits = ["Banana", "Orange", "Apple", "Mango"]; var first = fruits[0];
Zugriff auf das letzte Arrayelement
Beispiel
fruits = ["Banana", "Orange", "Apple", "Mango"]; var last = fruits[fruits.length - 1];
Durchlaufen Sie die Arrayelemente
Das sicherste Verfahren, ein Array zu durchlaufen, ist die Verwendung von "for
"Schleife:",
Beispiel
var fruits, text, fLen, i; fruits = ["Banana", "Orange", "Apple", "Mango"]; fLen = fruits.length; text = "<ul>"; for (i = 0; i < fLen; i++) { text += "<li>" + fruits[i] + "</li>"; }
Man kann auch verwenden Array.foreach()
Funktion:
Beispiel
var fruits, text; fruits = ["Banana", "Orange", "Apple", "Mango"]; text = "<ul>"; fruits.forEach(myFunction); text += "</ul>"; function myFunction(value) { text += "<li>" + value + "</li>"; }
Array-Elemente hinzufügen
Der beste Weg, neue Elemente zu einem Array hinzuzufügen, ist push()
Methode:
Beispiel
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.push("Lemon"); // Ein neues Element (Lemon) wird zu fruits hinzugefügt
Man kann auch verwenden length
Eigenschaft, um neue Elemente zu einem Array hinzuzufügen:
Beispiel
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits[fruits.length] = "Lemon"; // Ein neuer Element (Lemon) wird zu fruits hinzugefügt
Warnung!
Durch das Hinzufügen des Elements mit dem höchsten Index kann im Array ein nicht definiertes "Loch" erstellt werden:
Beispiel
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits[6] = "Lemon"; // Ein neuer Element (Lemon) wird zu fruits hinzugefügt
Assoziative Arrays
Viele Programmierungselemente unterstützen Arrays mit benannten Indizes.
Arrays mit benannten Indizes werden als assoziative Arrays (oder Hashes) bezeichnet.
JavaScript Es wird nicht unterstütztbenannten Indizes verwendet werden.
In JavaScript können Arrays nur mitZahlenindizes.
Beispiel
var person = []; person[0] = "Bill"; person[1] = "Gates"; person[2] = 62; var x = person.length; // person.length gibt 3 zurück var y = person[0]; // person[0] gibt "Bill" zurück
Warnung!
Wenn Sie benannte Indizes verwenden, definiert JavaScript das Array als Standardobjekt.
Nachdem dies geschehen ist, erzeugen alle Methoden und Eigenschaften der Arrays falsche Ergebnisse.
Beispiel:
var person = []; person["firstName"] = "Bill"; person["lastName"] = "Gates"; person["age"] = 62; var x = person.length; // person.length gibt 0 zurück var y = person[0]; // person[0] gibt undefined zurück
Unterschied zwischen Array und Objekt
In JavaScript,ArrayVerwendenZahlenindizes.
In JavaScript,ObjektVerwendenBenannte Indizes.
Arrays sind eine spezielle Art von Objekt, die numerische Indizes haben.
Wann sollte man ein Array und wann ein Objekt verwenden?
- JavaScript unterstützt keine assoziativen Arrays
- Wenn Sie den Namen der ElementeZeichenkette (Text)dann sollteObjekt.
- Wenn Sie den Namen der ElementeZahlendann sollteArray.
Vermeiden Sie new Array()
Es ist nicht notwendig, den eingebauten Array-Konstruktor von JavaScript zu verwenden new Array()
.
Verwenden Sie []
Stattdessen!
Die folgenden zwei verschiedenen Anweisungen erstellen ein neues leeres Array namens points:
var points = new Array(); // Schlecht var points = []; // Gut
Die folgenden zwei verschiedenen Anweisungen erstellen ein neues Array mit sechs Zahlen:
var points = new Array(40, 100, 1, 5, 25, 10); // Schlecht var points = [40, 100, 1, 5, 25, 10]; // Gut
new
Schlüsselwörter komplexieren den Code. Sie erzeugen auch unerwartete Ergebnisse:
var points = new Array(40, 100); // Erzeugt ein Array mit zwei Elementen (40 und 100)
Was passiert, wenn ich eines der Elemente entferne?
var points = new Array(40); // Erzeugt ein Array mit 40 nicht definierten Elementen!!!
Wie erkennt man ein Array
Eine häufige Frage ist: Wie kann ich wissen, ob eine Variable ein Array ist?
Das Problem liegt bei den JavaScript-Operatoren typeof
Wird "object
:
var fruits = ["Banana", "Orange", "Apple", "Mango"]; typeof fruits; // Wird "object" zurückgegeben
Der Operators Typ "object" wird zurückgegeben, da JavaScript-Arrays zu den Objekten gehören.
Lösung 1:
Um dieses Problem zu lösen, definierte ECMAScript 5 einen neuen Methoden Array.isArray()
:
Array.isArray(fruits); // gibt true zurück
Das Problem mit diesem Ansatz liegt in ECMAScript 5 Nicht alle alten Browser unterstützen.
Lösung 2:
Erstellen Sie Ihre eigene isArray()
Die Funktion löst dieses Problem:
function isArray(x) { return x.constructor.toString().indexOf("Array") > -1; }
Wenn der Parameter ein Array ist, gibt die obige Funktion stets true zurück.
Oder eine genauere Erklärung wäre: Wenn das Objektprotokoll das Wort "Array" enthält, wird true zurückgegeben.
Lösung 3:
Wenn ein Objekt vom angegebenen Konstruktor erstellt wurde, dann instanceof Operator gibt true zurück:
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits instanceof Array // gibt true zurück
- Vorherige Seite JS-Zahlenattribute
- Nächste Seite JS-Arraymethoden