在 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 []
在 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)
运行下面的代码片段以证明它按照您想要的方式执行
const arr = [];
for (let i = 0; i < 8; i++) {
arr.push(i);
console.log(`Array ${i + 1}: ${arr} -> ${arr.slice(1).slice(-5)}`);
}
如果你不介意从浏览器中加载巨大的JavaScript压缩文件,那么另一种做法就是使用lodash https://lodash.com/docs#rest
_.slice(_.rest(arr), -5)
_.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();
}
ES6方式:
我使用解构赋值来获取数组的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]))
);
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)
初学者解决方案:
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]));
slice(-5)
。最后一个条件只是 slice(1)
。第一个条件是不必要的。虽然不是严格必要的,但通常最好使用 else if
来显示相关条件。最后,var givme = function(n)
只是 function givme(n)
。 - General Grievancearray.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()
]
reverse
函数将原始数组反转。 2. slice
函数浅复制数组并创建一个新数组。 3. 第二个reverse
函数将切片后的数组反转,但不影响原数组。这意味着当完成此操作时,array
保持反转状态。如果需要验证,请在线尝试。。 - General Grievancereverse
会改变被调用的数组。如果你一定要使用reverse
来解决这个问题,你需要先克隆数组,然后再进行操作。这实际上是两个O(n)操作,而可以像上面的解决方案那样轻松地完成一个O(n)操作。 - General Grievance