# How do I get the last 5 elements, excluding the first element from an array?

Posted on

How do I get the last 5 elements, excluding the first element from an array? – Even if we have a good project plan and a logical concept, we will spend the majority of our time correcting errors abaout javascript and arrays. Furthermore, our application can run without obvious errors with JavaScript, we must use various ways to ensure that everything is operating properly. In general, there are two types of errors that you’ll encounter while doing something wrong in code: Syntax Errors and Logic Errors. To make bug fixing easier, every JavaScript error is captured with a full stack trace and the specific line of source code marked. To assist you in resolving the JavaScript error, look at the discuss below to fix problem about How do I get the last 5 elements, excluding the first element from an array?.

Problem :

In a JavaScript array, how do I get the last 5 elements, excluding the first element?

``````[1, 55, 77, 88] // ...would return [55, 77, 88]
``````

``````[1, 55, 77, 88, 99, 22, 33, 44] // ...would return [88, 99, 22, 33, 44]

 // ...would return []
``````

Solution :

You can call:

``````arr.slice(Math.max(arr.length - 5, 1))
``````

If you don’t want to exclude the first element, use

``````arr.slice(Math.max(arr.length - 5, 0))
``````

Here is one I haven’t seen that’s even shorter

`arr.slice(1).slice(-5)`

Run the code snippet below for proof of it doing what you want

``````var arr1 = [0, 1, 2, 3, 4, 5, 6, 7],
arr2 = [0, 1, 2, 3];

document.body.innerHTML = 'ARRAY 1: ' + arr1.slice(1).slice(-5) + '<br/>ARRAY 2: ' + arr2.slice(1).slice(-5);``````

Another way to do it would be using lodash https://lodash.com/docs#rest – that is of course if you don’t mind having to load a huge javascript minified file if your trying to do it from your browser.

`_.slice(_.rest(arr), -5)`

If you are using lodash, its even simpler with takeRight.

`_.takeRight(arr, 5);`

``````var y = [1,2,3,4,5,6,7,8,9,10];

console.log(y.slice((y.length - 5), y.length))``````

you can do this!

Try this:

``````var array = [1, 55, 77, 88, 76, 59];
var array_last_five;
array_last_five = array.slice(-5);
if (array.length < 6) {
array_last_five.shift();
}
``````

ES6 way:

I use destructuring assignment for array to get `first` and remaining `rest` elements and then I’ll take last five of the `rest` with slice method:

``````const cutOffFirstAndLastFive = (array) => {
const [first, ...rest] = array;
return rest.slice(-5);
}

cutOffFirstAndLastFive([1, 55, 77, 88]);

console.log(
'Tests:',
JSON.stringify(cutOffFirstAndLastFive([1, 55, 77, 88])),
JSON.stringify(cutOffFirstAndLastFive([1, 55, 77, 88, 99, 22, 33, 44])),
JSON.stringify(cutOffFirstAndLastFive())
);``````

You can do it in one line like this:

``````const y = [1,2,3,4,5,6,7,8,9,10];
const lastX = 5;
const res = y.filter((val, index, arr) => index > arr.length - lastX - 1);

console.log(res);``````
``````.filter((val, index, arr) => index > arr.length - 6)
``````

Beginner solution:

``````var givme = function(n) {
if(n.length == 1) {
return [];
}
if(n.length > 5) {
return n.slice(n.length-5, n.length);
}
if(n.length <= 5) {
return n.slice(1, n.length);
}
}

// console.log(givme([1, 55, 77, 88, 99, 22, 33, 44]));
``````

``````array.reverse()
.slice(0,5)
.reverse()  //if you wanna keep the order of last 5
``````

``````const myOriginalArray = [...Array(10).keys()] //making an array of numbers

const instanceFromlastFiveItemsOfMyArray = [
...myOriginalArray.reverse().slice(0,5).reverse()
]
``````