在 javascript 数组中,如何获取最后 5 个元素,不包括第一个元素?

IT技术 javascript arrays
2021-03-13 12:11:21
[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 []
6个回答

您可以致电:

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

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

arr.slice(Math.max(arr.length - 5, 0))
问题指出“排除第一个元素”,这就是为什么最后一个值是1而不是0
2021-04-26 12:11:21
不应该arr.slice(Math.max(arr.length - 5, 0))吗?
2021-04-28 12:11:21
+1 简单实用。另外我认为最后一个值 (1) 必须是 0 才能工作,这个 arr.slice(Math.max(arr.length - 5, 0)) 对我有用。
2021-04-29 12:11:21
或者你可以像我的回答那样做一个链式切片arr.slice(1).slice(-5)>.>。你们中的一些人也没有阅读标题,因为 OP 想要排除数组的第一个结果:|
2021-05-18 12:11:21
@KishanBharda:.slice()不修改原始数组。
2021-05-21 12:11:21

这是我从未见过的更短的

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

运行下面的代码片段以证明它做你想做的事

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

另一种方法是使用 lodash https://lodash.com/docs#rest - 当然,如果您不介意在尝试从浏览器执行此操作时必须加载一个巨大的 javascript 缩小文件。

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

高超!帮了我很多!
2021-05-02 12:11:21

如果您正在使用lodash,它甚至简单takeRight

_.takeRight(arr, 5);

如果数组少于 5 个元素,它也会处理
2021-05-17 12:11:21

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

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

你可以这样做!

这等同于: y.slice(- 5)
2021-05-05 12:11:21

试试这个:

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();
}
这仅适用于用户的特定示例。即长度为 4 的数组。
2021-04-28 12:11:21
-1 大惊小怪是提供正确的答案。虽然您的答案适用于返回最后 3 个元素,但它不适用于提供最多最后 5 个元素,不包括 first element这是 OP 的规范。
2021-05-08 12:11:21
让我改写。从评论中,最后五个元素,您只返回最后三个。这是示例。不是规范。
2021-05-10 12:11:21
不,不是真的。适用于任何长度的数组。-3 表示应返回最后 3 个元素。
2021-05-13 12:11:21
同样,这不是担心SO 的要点是提供特定用户问题的答案。你原来的答案没有。事实上,您的更新仍然不符合规范。
2021-05-18 12:11:21