Array.prototype.at()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since маÑÑ 2022 г..
ÐеÑод at() пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð·Ð½Ð°Ñение в виде Ñелого ÑиÑла и возвÑаÑÐ°ÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¼Ð°ÑÑива Ñ Ð´Ð°Ð½Ð½Ñм индекÑом. РкаÑеÑÑве аÑгÑменÑа меÑод пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑе и оÑÑиÑаÑелÑнÑе ÑиÑла. ÐÑи оÑÑиÑаÑелÑном знаÑении оÑÑÑÑÑ Ð¿ÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ñ ÐºÐ¾Ð½Ñа маÑÑива.
ÐнÑеÑакÑивнÑй пÑимеÑ
const array1 = [5, 12, 8, 130, 44];
let index = 2;
console.log(`An index of ${index} returns ${array1.at(index)}`);
// Expected output: "An index of 2 returns 8"
index = -2;
console.log(`An index of ${index} returns ${array1.at(index)}`);
// Expected output: "An index of -2 returns 130"
СинÑакÑиÑ
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 и ÑвойÑÑва Ñ ÑиÑловÑми клÑÑом.
ÐÑимеÑÑ
>ÐозвÑÐ°Ñ Ð¿Ð¾Ñледнего ÑлеменÑа маÑÑива
Ð ÑледÑÑÑем пÑимеÑе пÑедÑÑавлена ÑÑнкÑиÑ, коÑоÑÐ°Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ Ð¿Ð¾Ñледний ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¿ÐµÑеданного маÑÑива
// ÐаÑÑив Ñо знаÑениÑми
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().
// ÐÐ°Ñ Ð¼Ð°ÑÑив Ñ ÑлеменÑами
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 и вÑÑиÑлÑÐµÑ Ð¸Ð½Ð´ÐµÐºÑ Ð´Ð»Ñ Ð¾Ð±ÑаÑениÑ.
const arrayLike = {
length: 2,
0: "a",
1: "b",
};
console.log(Array.prototype.at.call(arrayLike, -1)); // "b"
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype.at> |
СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами
СмоÑÑиÑе Ñакже
- ÐолиÑил
Array.prototype.atв библиоÑекеcore-js - ÐолиÑил Ð´Ð»Ñ Ð¼ÐµÑода at().
Array.prototype.find()â возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение на оÑновании пÑовеÑки.Array.prototype.includes()â пÑовеÑÑÐµÑ Ð½Ð°Ð»Ð¸Ñие знаÑÐµÐ½Ð¸Ñ Ð² маÑÑиве.Array.prototype.indexOf()â возвÑаÑÐ°ÐµÑ Ð¸Ð½Ð´ÐµÐºÑ Ð¿ÐµÑеданного ÑлеменÑа.