Удалите все элементы после индекса
У меня есть массив:
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, поскольку сплайс начинает удалять по индексу.