Reputation: 186
I have a list of array items like this:
const items = [
{ a: 1 },
{ b: 2 },
{ c: 3 },
]
How can I return / log the last element: { c: 3 }
Here's what I've tried so far:
let newarray = items.map((item) => {
console.log(item);
})
console.log(newarray);
Upvotes: 8
Views: 35609
Reputation: 30327
You can use the Array.at()
method, which was moved to Stage 4 in Aug, 2021.
['a','b','c'].at(-1) // 'c'
This is often referred to as relative indexing which...
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.
Docs
Stack Overflow
Upvotes: 31
Reputation: 20404
Proposal for Array.prototype.findLast
and Array.prototype.findLastIndex
is now on Stage 3!
You can use it like this:
const items = [
{ a: 1 },
{ b: 2 },
{ c: 3 },
];
const last_element = items.findLast((item) => true);
console.log(last_element);
Upvotes: 2
Reputation: 2346
It's not required to use ES6 to perform the operation you're asking about. You could use either of the following:
/**
* The last value in the array, `3`, is at the '2' index in the array.
* To retrieve this value, get the length of the array, '3', and
* subtract 1.
*/
const items = [1, 2, 3];
const lastItemInArray = items[items.length - 1] // => 3
or:
/**
* Make a copy of the array by calling `slice` (to ensure we don't mutate
* the original array) and call `pop` on the new array to return the last
* value from the new array.
*/
const items = [1, 2, 3];
const lastItemInArray = items.slice().pop(); // => 3
However, if you are dead set on using ES6 to retrieve this value we can leverage the spread operator (which is an ES6 feature) to retrieve the value:
/**
* Create new array with all values in `items` array. Call `pop` on this
* new array to return the last value from the new array.
*
* NOTE: if you're using ES6 it might be a good idea to run the code
* through Babel or some other JavaScript transpiler if you need to
* support older browsers (IE does not support the spread operator).
*/
const items = [1, 2, 3];
const lastItemInArray = [...items].pop(); // => 3
Upvotes: 2
Reputation: 302
I want to let you try something different:
console.log(items.slice(-1));
Upvotes: 2
Reputation: 3680
If your list has 3 items, the length is 3 but the last item index is 2, since arrays start at 0, so simply do this:
console.log(items[items.length - 1]);
Doc: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
Upvotes: 3
Reputation: 29355
just log the length minus 1, nothing to do with es6:
console.log(items[items.length - 1])
Upvotes: 10