Array: length
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
Die length Daten-Eigenschaft einer Array Instanz repräsentiert die Anzahl der Plätze in diesem Array. Der Wert ist eine vorzeichenlose 32-Bit-Ganzzahl, die immer numerisch größer ist als der höchste Index im Array. Er kann größer sein als die Anzahl der Elemente, wenn das Array spärlich ist.
Probieren Sie es aus
const clothing = ["shoes", "shirts", "socks", "sweaters"];
console.log(clothing.length);
// Expected output: 4
Wert
Eine nichtnegative ganze Zahl kleiner als 232.
Eigenschaften von Array: length | |
|---|---|
| Schreibbar | ja |
| Aufzählbar | nein |
| Konfigurierbar | nein |
Beschreibung
Der Wert der length-Eigenschaft ist eine nichtnegative ganze Zahl mit einem Wert kleiner als 232.
const listA = [1, 2, 3];
const listB = new Array(6);
console.log(listA.length);
// 3
console.log(listB.length);
// 6
listB.length = 2 ** 32; // 4294967296
// RangeError: Invalid array length
const listC = new Array(-100); // Negative numbers are not allowed
// RangeError: Invalid array length
Das Array-Objekt beobachtet die length-Eigenschaft und synchronisiert den length-Wert automatisch mit dem Inhalt des Arrays. Das bedeutet:
- Wenn
lengthauf einen Wert gesetzt wird, der kleiner ist als die aktuelle Länge, wird das Array gekürzt — Elemente, die über die neuelengthhinausgehen, werden gelöscht. - Wenn ein Array-Index (eine nichtnegative ganze Zahl, die kleiner als 232 ist) jenseits der aktuellen
lengthgesetzt wird, wird das Array erweitert — dielength-Eigenschaft wird erhöht, um den neuen höchsten Index widerzuspiegeln. - Wenn
lengthauf einen ungültigen Wert (z. B. eine negative Zahl oder eine Nicht-Ganzzahl) gesetzt wird, wird eineRangeError-Ausnahme ausgelöst.
Wenn length auf einen größeren Wert als die aktuelle Länge gesetzt wird, wird das Array durch Hinzufügen von leeren Plätzen und nicht durch tatsächliche undefined Werte erweitert. Leere Plätze haben einige spezielle Interaktionen mit Array-Methoden; siehe Array-Methoden und leere Slots.
const arr = [1, 2];
console.log(arr);
// [ 1, 2 ]
arr.length = 5; // set array length to 5 while currently 2.
console.log(arr);
// [ 1, 2, <3 empty items> ]
arr.forEach((element) => console.log(element));
// 1
// 2
Siehe auch Beziehung zwischen length und numerischen Eigenschaften.
Beispiele
>Über ein Array iterieren
Im folgenden Beispiel wird das Array numbers durch Iteration über die length-Eigenschaft durchlaufen. Der Wert jedes Elements wird dann verdoppelt.
const numbers = [1, 2, 3, 4, 5];
const length = numbers.length;
for (let i = 0; i < length; i++) {
numbers[i] *= 2;
}
// numbers is now [2, 4, 6, 8, 10]
Ein Array verkürzen
Das folgende Beispiel verkürzt das Array numbers auf eine Länge von 3, wenn die aktuelle Länge größer als 3 ist.
const numbers = [1, 2, 3, 4, 5];
if (numbers.length > 3) {
numbers.length = 3;
}
console.log(numbers); // [1, 2, 3]
console.log(numbers.length); // 3
console.log(numbers[3]); // undefined; the extra elements are deleted
Leeres Array mit fester Länge erstellen
Das Setzen von length auf einen Wert, der größer ist als die aktuelle Länge, erzeugt ein spärliches Array.
const numbers = [];
numbers.length = 3;
console.log(numbers); // [empty x 3]
Array mit nicht-schreibbarer Länge
Die length-Eigenschaft wird vom Array automatisch aktualisiert, wenn Elemente über die aktuelle Länge hinaus hinzugefügt werden. Wenn die length-Eigenschaft schreibgeschützt gemacht wird, kann das Array sie nicht aktualisieren. Dies führt zu einem Fehler im Strict-Modus.
"use strict";
const numbers = [1, 2, 3, 4, 5];
Object.defineProperty(numbers, "length", { writable: false });
numbers[5] = 6; // TypeError: Cannot assign to read only property 'length' of object '[object Array]'
numbers.push(5); // // TypeError: Cannot assign to read only property 'length' of object '[object Array]'
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-properties-of-array-instances-length> |