Access Last Element of a Typescript Array

Access Last Element of a Typescript Array

Is there a notation to access the last element of an array in TypeScript? In Ruby I can say: array[-1]. Is there something similar?

8 Answers

You can access the array elements by it's index. The index for the last element in the array will be the length of the array-1 ( as indexes are zero based).

This should work.

var items: String[] = ["tom", "jeff", "sam"];

alert(items[items.length-1])

Here is a working sample.

4

If you don't need the array afterwards, you could use

array.pop()

But that removes the element from the array!

The pop returns T | undefined so you need to take care of that in your implementation.

If you are sure there will be always a value you can use non-null assertion operator (!):

     var poped = array.pop()
     array.push(poped!);
2

Here is another way which has not yet been mentioned:

items.slice(-1)[0]
2

As of July 2021, browsers are starting to support the at() method for Arrays which allows for the following syntax:

const arr: number[] = [1, 2, 3];

// shows 3
alert(arr.at(-1)); 

It's not clear to me at what point TypeScript will start to support this (it's not working for me just yet) but it should be available soon I would guess.

Edit: This is available as of typescript@4.5.4

3

Here are a the options summarized together, for anyone finding this question late like me.

var myArray = [1,2,3,4,5,6];

// Fastest method, requires the array is in a variable
myArray[myArray.length - 1];

// Also very fast but it will remove the element from the array also, this may or may 
// not matter in your case.
myArray.pop();

// Slowest but very readable and doesn't require a variable
myArray.slice(-1)[0]
1

If you need this call more often it's possible to declare it globally:

interface Array<T> {
    last(): T | undefined;
}
if (!Array.prototype.last) {
    Array.prototype.last = function () {
        if (!this.length) {
            return undefined;
        }
        return this[this.length - 1];
    };
}

then you can just call

items.last()
1

I'm going with this one as my first contribution to stackoverflow:

var items: String[] = ["tom", "jeff", "sam"];

const lastOne = [...items].pop();

NOTE: Unlike the use of pop() without the spread operator, this approach doesn't remove the last element from the original array.

1
const arr = [1, 3, 6, 2];
console.log(...arr.slice(-1)); // 2
1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Elena Rostova
Author

Elena Rostova

Elena Rostova holds a Master's degree in Public Health Journalism. She covers groundbreaking medical research, holistic wellness trends, mental health awareness, and nutritional science.