2013-08-16 2 views
6

У меня есть массив. У меня есть переменная, которая показывает, сколько элементов в массиве должно быть оставлено в конце. Есть ли функция, которая сделает это? Пример:Как удалить все элементы, кроме последних элементов из массива?

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

Я хочу, чтобы массив с последними n элементов в нем.

+8

[Array.slice] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice)? 'arr.slice (-2)' возвращает '[4,5]'. –

+0

Посмотрите на '.splice()' –

+0

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

ответ

16

Метод среза - это то, что вы хотите. Он возвращает новый объект, поэтому вы должны заменить существующий объект на новый.

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

Также можно изменить существующий массив на splice().

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

Сцежок является более эффективным, поскольку он не является копирующим элементом.

+10

Вместо '-1 * n' вы можете просто сделать' -n'. – Pluto

+2

Несомненно. Что вы предпочитаете. – Craig

+1

Просто, чтобы уточнить, не имеет ли это значение для кого-то: 'splice' вернет первый набор элементов, но он также ** удалит ** их из реального массива. Дополнительная информация: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/splice –

Смежные вопросы