我如何得到最后5个元素,从数组中排除第一个元素?

在一个JavaScript数组,我如何得到最后5个元素,排除第一个元素?

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

再举几个例子:

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


[1] // ...would return []
252140 次浏览

你可以致电:

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

如果不想排除第一个元素,请使用

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

试试这个:

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();
}

我还没见过比这更短的

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

运行下面的代码片段,以证明它正在执行您想要的操作

const arr = [];
for (let i = 0; i < 8; i++) {
arr.push(i);
console.log(`Array ${i + 1}: ${arr} -> ${arr.slice(1).slice(-5)}`);
}

另一种方法是使用lodash https://lodash.com/docs#rest -当然,如果你不介意从浏览器中加载一个巨大的JavaScript缩小文件。

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

如果你在使用lodash,用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))

你能做到的!

ES6道:

我使用解构的任务 for数组来获取first和剩余的rest元素,然后我将使用方法获取rest的最后五个元素:

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([1]))
);

你可以像这样在一行中完成:

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)
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()
]

初学者的解决方案:

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]));