2013-08-16 41 views
6

Tôi có một mảng. Tôi có một biến cho thấy có bao nhiêu phần tử trong mảng phải được để lại ở cuối. Có chức năng nào sẽ làm điều đó không? Ví dụ:Làm cách nào để xóa tất cả trừ các phần tử N cuối cùng khỏi một mảng?

var arr = [1, 2, 3, 4, 5]; 
var n = 2; 
arr = someFunction(n); // arr = [4, 5]; 

Tôi muốn một mảng có n yếu tố cuối cùng trong đó.

+8

[Array.slice] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice)? 'arr.slice (-2)' trả về '[4,5]'. –

+0

xem '.splice()' –

+0

'arr = arr.slice (~ n + 1);' – adeneo

Trả lời

16

Phương pháp cắt lát là những gì bạn muốn. Nó trả về một đối tượng mới, vì vậy bạn phải thay thế đối tượng hiện tại của bạn bằng một đối tượng mới.

arr = arr.slice(-1 * n); 

Hoặc, sửa đổi mảng hiện có bằng splice().

arr.splice(0, arr.length - n); 

Ghép là hiệu quả hơn vì không sao chép các phần tử.

+10

Thay vì '-1 * n', bạn chỉ có thể thực hiện' -n'. – Pluto

+2

Chắc chắn. Bất cứ thứ gì bạn thích. – Craig

+1

Chỉ cần làm rõ nếu điều này không có ý nghĩa với một người nào đó: 'splice' sẽ trả về tập hợp các phần tử đầu tiên, nhưng nó cũng sẽ loại bỏ ** chúng khỏi mảng thực tế. Thông tin thêm: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/splice –

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