繁体   English   中英

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

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

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

您可以致电:

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

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

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

这是我从未见过的更短的

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)

如果您正在使用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))

你可以这样做!

尝试这个:

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

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

 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)

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

function lastN(arr, n) {
    return arr.slice(-n);
}

初学者解决方案:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM