Довідник javascript splice

start
Індекс в масиві, з якого починати видалення.
deleteCount
Кількість елементів, яке потрібно видалити, починаючи з індексу start.
  • IE. якщо цей параметр не вказано, то жоден елемент не буде видалений.
  • Firefox. якщо цей параметр не вказано, то будуть видалені всі елементи, починаючи з індексу start.
  • Opera. (Досліджено в версії 9.61) якщо цей параметр не вказано, то будуть знаходиться на відстані 1 елемент, який має індекс start +1. У цьому ж випадку замість вилученого елемента буде повернута порожній рядок.
elem1, elem2. elemN
Додаються елементи в масив. Додавання починається з позиції start.

Опис, приклади

Мабуть, самий комплексний метод для роботи з масивом.

Він об'єднує в собі дві різні функціональності: видаляє частину масиву і додає нові елементи на місце видалених.

При цьому можна звести до нуля кількість видаляються елементів - тоді це буде просто додавання.

І можна не додавати елементів - тоді це буде просто видалення.

Метод повертає масив з віддалених елементів.

Приклад: Видалення одного елемента

Приклад: Додавання елементів

Біда тут в тому, що масив в js по суті є об'єкт класу Array зі своїм прототипом, що містить різні методи для роботи з ним, включаючи розібраний в статті, і числові індекси в ньому ніщо інше, як просто ключі об'єкта зі своїми значеннями. Це означає, що при виклику delete ключ просто видаляється з об'єкту, значення ключа втрачає доступність і збирається збирачем - пам'ять не захаращується, але при новому push в масив він буде обчислювати новий індекс не по мінімальному доступному значенням ( "дірці", як Ви висловилися) , а по максимальному + 1, і в довгоживучих скрипті це ризик не втрати пам'яті, а ризик впертися в довжину number, проте він украй низький, якщо, звичайно, Ваш скрипт не робить щомиті по півтисячі операцій додавання порожніх значень (інакше пам'ять заб'ється швидше, чим закінчиться num ber) в масив і не повинен жити з протягом місяців. У випадку ж із splice ми сильно втрачаємо в продуктивності - метод під час "вирізання" елементів починає робити перестановки всіх елементів, що сильно віджирали процесорний час, і якщо масив дуже довгий, то одна така операція потребує багато часу, що, наприклад, в іграх (припустимо, масив спрайтів, або дані про ефекти, частинках, яких взагалі до біса може бути) може стати причиною просідання fps, тому більш зручний Вам метод видалення елемента з масиву слід вибирати виходячи з особливостей роботи Вашого js-додатки або скри та. По суті, вибір між швидкістю роботи і довговічністю.