2011-06-24 19 views
98
[1, 55, 77, 88] // ...would return [55, 77, 88] 

añadiendo ejemplos adicionales:En una matriz javascript, ¿cómo obtengo los últimos 5 elementos, excluyendo el primer elemento?

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

[1] // ...would return [] 
+0

Su ejemplo son los últimos 3 elementos. Proporcione un poco más de sus especificaciones. –

+1

¿siempre quieres los últimos 5? o todos menos el primero, sin importar la duración? – ShaneBlake

+3

@Jason: Quiere hasta cinco elementos. – SLaks

Respuesta

183

Puede llamar:

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

+1 para lectura de la mente y rapidez. –

+5

+1 simple y útil. Además, creo que el último valor (1) debe ser 0 para trabajar, este arr.slice (Math.max (arr.length - 5, 0)) funcionó para mí. – QMaster

+38

'$ ('img'). Slice (-5)' también funciona. – TuteC

2

Prueba esto:

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

Esto solo funciona para el ejemplo específico del usuario. Eso es matrices con una longitud de 4. –

+0

No, en realidad no. Funciona bien con cualquier longitud de matriz. El -3 indica que deben devolverse los últimos 3 elementos. – Arka

+1

Déjenme reformular. De los comentarios, * los últimos cinco elementos *, solo devuelve los últimos 3. Cuál es el ejemplo. No es la especificación –

24

Aquí está uno que no tengo visto que es incluso más corto

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

Ejecutar el siguiente fragmento de código para la prueba de ello haciendo lo que quiere

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

Otra manera de hacerlo sería utilizar lodash https://lodash.com/docs#rest - eso es, por supuesto, si no te importa tener que cargar un gran archivo miniaturizado de javascript si intentas hacerlo desde tu navegador.

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

11

Si está utilizando lodash, es incluso más simple con takeRight.

_.takeRight(arr, 5);

+0

También se ocupa de si la matriz tiene menos de 5 elementos – Devank

2

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

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

usted puede hacer esto!

Cuestiones relacionadas