Удалите все элементы после индекса

У меня есть массив:

array = ['mario','luigi','kong']

Я вызываю его функцию сращивания, чтобы удалить все элементы перед индексом:

array.splice(1) //-> ['luigi','kong']

Мне просто интересно, есть ли функция, подобная сращиванию, чтобы удалить все элементы после индекса:

псевдокод

array.mirrorsplice(1) //-> ['mario','luigi']

Ответы

Ответ 1

Используйте Array.length, чтобы установить новый размер для массива, который быстрее, чем Array.splice, чтобы изменить:

var array = ['mario','luigi','kong', 1, 3, 6, 8];
array.length=2;
alert(array); // shows "mario,luigi";

Почему это быстрее? Потому что .splice должен создать новый массив, содержащий все удаленные элементы, тогда как .length ничего не создает и "возвращает" число вместо нового массива.

Чтобы решить проблему использования .splice, вы можете указать ему отрицательный индекс, а также огромное число, чтобы отрезать конец массива:

var array = ['mario','luigi','kong'];
array.splice(-1, 9e9); 
alert(array); // shows "mario,luigi";

Ответ 2

Хотя присвоение более короткого значения длине массива (как сказал @dandavis) является самым быстрым и простым способом удаления конечного элемента из массива, вы также можете сделать это с помощью аналогичного метода, как splice, который известен как ломтик. Например:

array = ['mario', 'luigi', 'kong'];

array = array.slice(0, 2); //Need to assign it to the same or another variable

console.log(array); //["mario", "luigi"]

Ответ 3

To удалить все элементы после индекса:

var array = ['mario','luigi','kong'],
index = 1; // your index here
array.splice(index + 1, array.length - (index + 1) );
// 3 - (1+1) = 1
// 1 is the remaining number of element(s) in array
// hence, splice 1 after index

Результат:

['mario', 'luigi']

Вам нужно +1, поскольку сплайс начинает удалять по индексу.