Signatur
Beschreibung
Die Methode at() liest ein einzelnes Element eines Arrays über seinen Index. Bei positiven Werten verhält sie sich wie die Klammer-Schreibweise arr[index]. Ihr eigentlicher Vorteil sind negative Indizes: arr.at(-1) liefert das letzte Element, arr.at(-2) das vorletzte usw. Intern wird ein negativer Index zu index + arr.length umgerechnet.
Ohne at() musste man für das letzte Element arr[arr.length - 1] schreiben, was umständlich ist. Das gilt besonders, wenn das Array erst aus einem längeren Ausdruck entsteht, etwa str.split("/").at(-1). Mit arr[-1] kommt man nicht ans Ziel, denn damit wird nach einer Eigenschaft mit dem Namen "-1" gesucht, und das Ergebnis ist fast immer undefined.
Das Argument wird in eine Ganzzahl umgewandelt: Nachkommastellen werden abgeschnitten, NaN und ein fehlendes Argument werden zu 0. Liegt der Index danach außerhalb des gültigen Bereichs, gibt at() undefined zurück und wirft keinen Fehler. Die Methode ist generisch: Sie funktioniert mit jedem array-ähnlichen Objekt, das eine length-Eigenschaft hat. Außerdem gibt es sie auch für String und für typisierte Arrays (TypedArray).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $index | number | 0 | Nullbasierter Index des gewünschten Elements. Negative Werte zählen vom Ende aus (-1 = letztes Element). Der Wert wird in eine Ganzzahl umgewandelt (Nachkommastellen werden abgeschnitten, NaN wird zu 0). |
Rückgabewert
undefined, wenn der Index außerhalb von -length bis length - 1 liegt.Beispiele
Positive und negative Indizes
const farben = ["rot", "grün", "blau", "gelb"];
console.log(farben.at(0)); // erstes Element
console.log(farben.at(-1)); // letztes Element
console.log(farben.at(-2)); // vorletztes Element
console.log(farben.at(10)); // außerhalb des Bereichs
console.log(farben[-1]); // Klammer-Schreibweise: kein negativer Index!
Dateiendung und letzten Pfadteil ermitteln
const pfad = "/var/www/uploads/bericht.final.pdf";
const dateiname = pfad.split("/").at(-1);
const endung = dateiname.split(".").at(-1);
console.log(dateiname);
console.log(endung);
Letzten Eintrag eines Verlaufs lesen (mit Fallback)
const verlauf = [];
const letzterSchritt = () => verlauf.at(-1) ?? "kein Eintrag";
console.log(letzterSchritt());
verlauf.push("Login", "Warenkorb", "Kasse");
console.log(letzterSchritt());
Generische Nutzung mit array-ähnlichen Objekten
const arrayAehnlich = { length: 3, 0: "a", 1: "b", 2: "c" };
console.log(Array.prototype.at.call(arrayAehnlich, -1));
// Auch Strings und typisierte Arrays kennen at()
console.log("Hallo".at(-1));
console.log(new Uint8Array([10, 20, 30]).at(-2));
// Wichtig · Fallstricke
- Kein Fehler außerhalb des Bereichs:
at()gibtundefinedzurück. Daran lässt sich nicht erkennen, ob der Index ungültig ist oder ob das Element selbstundefinedenthält. Wenn das eine Rolle spielt, vorherlengthprüfen. - Umwandlung des Arguments:
arr.at("1")funktioniert,arr.at(1.9)liefert das Element an Index1, undarr.at()sowiearr.at(NaN)liefern das erste Element. Das kann Fehler verdecken. - Nur Lesezugriff: Mit
at()lässt sich kein Wert schreiben (arr.at(-1) = xist ein Syntaxfehler). Zum Ersetzenarr[arr.length - 1] = xverwenden oderarr.with(-1, x)(ES2023), das eine veränderte Kopie liefert. - Lücken in Arrays: Bei Arrays mit Lücken wie
[1, , 3]liefertat(1)undefined. - Kompatibilität: Verfügbar ab Chrome 92, Firefox 90, Safari 15.4 und Node.js 16.6. Für ältere Umgebungen gibt es einen Polyfill, z. B.
core-js. - Performance: In modernen Engines ist
at()praktisch so schnell wie der Zugriff mit Klammern. In sehr heißen Schleifen kannarr[i]minimal schneller sein.