web-dev-qa-db-fra.com

Dans un tableau javascript, comment puis-je obtenir les 5 derniers éléments, à l'exclusion du premier élément?

[1, 55, 77, 88] // ...would return [55, 77, 88]

ajout d'exemples supplémentaires:

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

[1] // ...would return []
158
TIMEX

Tu peux appeler:

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

En voici un que je n'ai pas vu et qui est encore plus court

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

Exécutez l'extrait de code ci-dessous pour obtenir la preuve qu'il fait ce que vous voulez.

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

Une autre façon de le faire serait d’utiliser lodash https://lodash.com/docs#rest - c’est bien sûr si vous ne vous dérange pas de charger un énorme fichier javascript minifié si vous essayez de le faire. faites-le depuis votre navigateur.

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

49
Belldandu

Si vous utilisez lodash, c'est encore plus simple avec takeRight .

_.takeRight(arr, 5);

24
hhsadiq

Essaye ça:

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();
}
9
Arka
var y = [1,2,3,4,5,6,7,8,9,10];

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

tu peux le faire!

2
Madhu Kumar

La solution la plus simple est:

arr // input array
let numberOfLastItems = 5;

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