Start · Sprachen · JavaScript · Referenz · Array.prototype.at()

Array.prototype.at()

Methode

Gibt das Element an einem Index zurück, wobei negative Werte vom Ende des Arrays aus zählen (<code>-1</code> = letztes Element).

seit JavaScript ES2022 (Baseline: alle modernen Browser seit 2022, Kategorie: method-property

Signatur

Array.prototype.at(index)

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

Typ
any | undefined
Beschreibung
Das Element am angegebenen Index. 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!
rot gelb blau undefined undefined

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);
bericht.final.pdf pdf

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());
kein Eintrag Kasse

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));
c o 20

// Wichtig · Fallstricke

  • Kein Fehler außerhalb des Bereichs: at() gibt undefined zurück. Daran lässt sich nicht erkennen, ob der Index ungültig ist oder ob das Element selbst undefined enthält. Wenn das eine Rolle spielt, vorher length prüfen.
  • Umwandlung des Arguments: arr.at("1") funktioniert, arr.at(1.9) liefert das Element an Index 1, und arr.at() sowie arr.at(NaN) liefern das erste Element. Das kann Fehler verdecken.
  • Nur Lesezugriff: Mit at() lässt sich kein Wert schreiben (arr.at(-1) = x ist ein Syntaxfehler). Zum Ersetzen arr[arr.length - 1] = x verwenden oder arr.with(-1, x) (ES2023), das eine veränderte Kopie liefert.
  • Lücken in Arrays: Bei Arrays mit Lücken wie [1, , 3] liefert at(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 kann arr[i] minimal schneller sein.