Scott Whittaker

Frontend Developer

Day job React | side projects Svelte

JavaScript Array.prototype.at()

Browsing the MDN docs to look up something related to arrays I noticed the experimental Array.prototype.at() method so I thought I would take a look.

The at() method takes an integer value and returns the item at that index, allowing for positive and negative integers. Negative integers count back from the last item in the array.

MDN

Try it out on CodeSandbox

This is an alternative to using square bracket notation to access items in an array.

As an example we will use the following array and have a variable idx which has value of 2.

const list = ['one', 'two', 'threee', 'four', 'five'];

let idx = 2;

Using square bracket notation we access the value as follows…

const item = list[idx]; // three

Using the at method…

const item = list.at(idx); // three

The advantage of using the at method is when using negative indexes. Typically when we want to get the last item in an array we minus one from the array length.

const lastItem = list[list.length - 1]; // five

The at method is more concise. Pass -1 as the argument and it returns the last item in the array.

const lastItem = list.at(-1); // five

To get the penultimate item pass -2 as the argument and so on.

const penultimateItem = list.at(-2); // four

I was not sure why this would be added to the language other than for convenience (which is great) but apparently it has been a long held request as noted below.

For many years, programmers have asked for the ability to do “negative indexing” of JS Arrays, like you can do with Python. That is, asking for the ability to write arr[-1] instead of arr[arr.length-1], where negative numbers count backwards from the last element.

tc39 Rationale