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

TIM*_*MEX 167 javascript arrays

[1, 55, 77, 88] // ...would return [55, 77, 88]
Run Code Online (Sandbox Code Playgroud)

添加其他示例:

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

[1] // ...would return []
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 289

你可以打电话:

arr.slice(Math.max(arr.length - 5, 1))
Run Code Online (Sandbox Code Playgroud)

  • `$('img').slice(-5)`也有效. (104认同)
  • 不应该是`arr.slice(Math.max(arr.length - 5,0))`? (16认同)
  • +1简单实用.另外我认为最后一个值(1)必须为0才能工作,这个arr.slice(Math.max(arr.length - 5,0))对我有用. (8认同)
  • 问题陈述"排除第一个元素",这就是为什么最后一个值是"1"而不是"0". (4认同)
  • 或者你可以像我的答案`arr.slice(1).slice(-5)`>.>那样做一个链片.还有一些人没有读到标题,因为OP想要排除数组的第一个结果:| (3认同)

Bel*_*ndu 54

这是我没见过的更短的一个

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);
Run Code Online (Sandbox Code Playgroud)

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

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


hhs*_*diq 27

如果你正在使用lodash,那就更简单了takeRight.

_.takeRight(arr, 5);

  • 它还要注意数组是否少于5个元素 (2认同)

小智 14

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

console.log(y.slice((y.length - 5), y.length))
Run Code Online (Sandbox Code Playgroud)

你可以这样做!

  • 这等同于: y.slice(- 5) (5认同)

Ark*_*rka 9

试试这个:

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();
}
Run Code Online (Sandbox Code Playgroud)

  • 这仅适用于用户的特定示例.这是长度为4的数组. (2认同)
  • 再说一遍,这不是*担心*。SO 的要点是为特定的用户问题提供答案。你原来的答案没有。事实上,您的更新仍然不符合规范。 (2认同)

god*_*rry 5

ES6方式:

我对数组使用解构赋值来获取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]))
);
Run Code Online (Sandbox Code Playgroud)


Noe*_*enk 5

您可以像这样一行完成:

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);
Run Code Online (Sandbox Code Playgroud)

.filter((val, index, arr) => index > arr.length - 6)
Run Code Online (Sandbox Code Playgroud)