JavaScript Array.at: элемент с конца массива
Array.prototype.at() возвращает элемент по индексу и поддерживает отрицательные значения: at(-1) — последний элемент, at(-2) — предпоследний. Метод появился в ES2022 и работает также для строк и типизированных массивов. В отличие от arr[-1], он не создаёт свойство с именем "-1".
Взять элементы с конца
const items = ["a", "b", "c"];
console.log(items.at(0)); // a
console.log(items.at(-1)); // c
console.log(items.at(-2)); // b
console.log(items.at(10)); // undefinedВыход за границы не выбрасывает исключение, а возвращает undefined. Это удобно для проверки «есть ли элемент», но может скрыть ошибку индексации. Если отсутствие значения недопустимо, проверяйте длину или используйте ?? с явным значением по умолчанию.
Применить к строке
const text = "привет";
console.log(text.at(-1)); // тСтроки в JavaScript неизменяемы, поэтому at() только читает символ. Для получения нескольких символов с конца используйте slice(-3). Для кодовых точек Unicode at() возвращает половину суррогатной пары, как и обычный индекс; для графем нужен Intl.Segmenter.
arr[-1] не работает как индекс: JavaScript воспринимает -1 как строковый ключ, и вы получите undefined, даже если в массиве есть элементы. Старый способ arr[arr.length - 1] остаётся рабочим, но at(-1) короче и лучше читается. Для пустого массива оба варианта дадут undefined.
Метод поддерживается в Chrome 92+, Firefox 90+, Safari 15.4+ и Node.js 16.6+. Дробный индекс усекается к целому, а NaN считается нулём. В старых окружениях нужен полифил или обычная индексация.
Документация: Array.prototype.at, String.prototype.at.