Array.prototype.at()
Метод at() принимает значение в виде целого числа и возвращает элемент массива с данным индексом. В качестве аргумента метод принимает положительные и отрицательные числа. При отрицательном значении отсчёт происходит с конца массива.
Интерактивный пример
Синтаксис
js
at(index)
Параметры
index-
Индекс (позиция) элемента возвращаемого элемента массива. При передаче отрицательного индекса применяется относительная индексация с конца массива; например, при использовании отрицательного числа, возвращаемый элемент находится путём обратного отсчёта с конца массива.
Возвращаемое значение
Элемент массива, соответствующий переданному индексу. Если переданный индекс не может быть найден, возвращает undefined.
Описание
Метод at() является эквивиалентом получения элементов массива с помощью квадратных скобок с использованием неотрицательного индекса. Например, array[0] и array.at(0) оба вернут первый элемент. Однако, при вычислении значения с конца массива, нельзя использовать array[-1] как в Python или R, потому что все значения внутри квадратных скобок трактуются буквально как строковые свойства. Из-за этого попытка обращения к -1 элементу будет прочитана как array["-1"], что является нормальным строковым значением, а не индексом массива.
Обычной практикой является получении числа элементов массива length и последующее вычисление значения индекса — например, array[array.length - 1]. Метод at() разрешает относительную индексацию, поэтому может быть сокращено до array.at(-1).
Метод at() — это generic. Он ожидает только, что значение this будет иметь свойство length и свойства с числовыми ключом.
Примеры
Возврат последнего элемента массива
В следующем примере представлена функция, которая возвращает последний элемент переданного массива
js
// Массив со значениями
const cart = ['apple', 'banana', 'pear'];
// Функция, которая возвращает последний элемент переданного массива
function returnLast(arr) {
return arr.at(-1);
}
// Получить последний элемент нашего массива 'cart'
const item1 = returnLast(cart);
console.log(item1); // Выведет: 'pear'
// Добавить элемент в наш массив 'cart'
cart.push('orange');
const item2 = returnLast(cart);
console.log(item2); // Выведет: 'orange'
Сравнение методов
В этом примере сравниваются разные способы выбора предпоследнего элемента массива. Хотя все приведённые ниже способы являются допустимыми, наиболее кратким и наглядным является использование метода at().
js
// Наш массив с элементами
const colors = ['red', 'green', 'blue'];
// Использование свойства 'length'
const lengthWay = colors[colors.length-2];
console.log(lengthWay); // Выведет: 'green'
// Использование метода slice(). Обратите внимание, что возвращается массив
const sliceWay = colors.slice(-2, -1);
console.log(sliceWay[0]); // Выведет: 'green'
// Использование метода at()
const atWay = colors.at(-2);
console.log(atWay); // Выведет: 'green'
Вызов at() в массивоподобных объектах
Метод at() считывает свойство length для значения this и вычисляет индекс для обращения.
js
const arrayLike = {
length: 2,
0: "a",
1: "b",
};
console.log(Array.prototype.at.call(arrayLike, -1)); // "b"
Спецификации
| Specification |
|---|
| ECMAScript Language Specification # sec-array.prototype.at |
Поддержка браузерами
BCD tables only load in the browser
Смотрите также
- Полифил
Array.prototype.atв библиотекеcore-js - Полифил для метода at().
Array.prototype.find()– возвращает значение на основании проверки.Array.prototype.includes()– проверяет наличие значения в массиве.Array.prototype.indexOf()– возвращает индекс переданного элемента.