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

时间:2011-06-24 21:17:17

标签: javascript arrays

[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 []

7 个答案:

答案 0 :(得分:274)

您可以致电:

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

答案 1 :(得分:47)

这是一个我还没有看到更短的

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);
&#13;
&#13;
&#13;

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

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

答案 2 :(得分:23)

如果您使用的是lodash,使用takeRight更简单。

_.takeRight(arr, 5);

答案 3 :(得分: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();
}

答案 4 :(得分:2)

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

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

你可以这样做!

答案 5 :(得分:2)

ES6方式:

我使用destructuring assignment作为数组来获取first和其余rest元素,然后使用slice方法获取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]))
);

答案 6 :(得分:0)

最简单的解决方案是:

arr // input array
let numberOfLastItems = 5;

arr.slice((arr.length - numberOfLastItems), arr.length)