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

thêm ví dụ bổ sung:Trong một mảng javascript, làm cách nào để có được 5 phần tử cuối cùng, trừ phần tử đầu tiên?

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

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

Ví dụ của bạn là 3 yếu tố cuối cùng. Cung cấp thêm một chút thông số kỹ thuật của bạn. –

+1

bạn có luôn muốn 5 người cuối cùng không? hoặc tất cả mọi người, nhưng đầu tiên, không có vấn đề gì về chiều dài? – ShaneBlake

+3

@ Jason: Anh ấy muốn tối đa năm yếu tố. – SLaks

Trả lời

183

Bạn có thể gọi:

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

+1 cho tâm trí đọc và nhanh chóng. –

+5

+1 đơn giản và hữu ích. Ngoài ra tôi nghĩ rằng giá trị cuối cùng (1) phải là 0 để làm việc, arr.slice này (Math.max (arr.length - 5, 0)) làm việc cho tôi. – QMaster

+38

'$ ('img'). Slice (-5)' cũng hoạt động. – TuteC

2

Hãy thử điều này:

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

Điều này chỉ hoạt động cho ví dụ cụ thể của người dùng. Đó là mảng có chiều dài 4. –

+0

Không, không thực sự. Hoạt động tốt với bất kỳ độ dài của mảng. Các -3 chỉ ra rằng 3 yếu tố cuối cùng nên được trả lại. – Arka

+1

Hãy để tôi nói lại. Từ các ý kiến, * năm phần tử cuối cùng *, bạn chỉ trả về cuối cùng 3. Ví dụ nào. Không phải thông số kỹ thuật. –

24

Dưới đây là một trong tôi đã không thấy rằng thậm chí còn ngắn hơn

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

Chạy đoạn mã dưới đây để chứng minh nó làm những gì bạn muốn

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

Một cách khác để làm điều đó sẽ được sử dụng lodash https://lodash.com/docs#rest - đó là tất nhiên nếu bạn không nhớ phải tải một tập tin javascript rất nhỏ minified nếu bạn cố gắng để làm điều đó từ trình duyệt của bạn.

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

11

Nếu bạn đang sử dụng lodash, nó thậm chí còn đơn giản hơn với takeRight.

_.takeRight(arr, 5);

+0

Nó cũng sẽ quan tâm nếu mảng có ít hơn 5 phần tử – Devank

2

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

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

bạn có thể làm điều này!

Các vấn đề liên quan