Ответ
Удаление элемента из массива имеет сложность O(n), где n — длина массива. Это связано с тем, что при удалении элемента (например, через splice()), все последующие элементы нужно сдвинуть на одну позицию влево.
const arr = [1, 2, 3, 4, 5];
arr.splice(2, 1); // Удаляем элемент с индексом 2
// Оставшиеся элементы [4, 5] сдвигаются
Исключение: удаление последнего элемента (pop()) имеет O(1), так как не требует переиндексации.
Ответ 18+ 🔞
А, ну это же классика, блядь! Вот сидишь ты такой, думаешь: "Щас я тут элемент из массива выкину — и всё будет быстро, как хуй с горы". Ан нет, сука!
Смотри, в чём подвох. Берёшь ты свой массивчик, красивый такой, [1, 2, 3, 4, 5]. И вдруг тебе приспичило выковырять из середины, скажем, тройку. Ну, ты ж не дурак, берёшь splice(2, 1) и — оп-па!
const arr = [1, 2, 3, 4, 5];
arr.splice(2, 1); // Удаляем элемент с индексом 2
// Оставшиеся элементы [4, 5] сдвигаются
И тут начинается, блядь, цирк. Компьютер же не может просто так взять и оставить дырку. Ему надо, чтобы все элементы, которые стояли после удалённого, дружно подвинулись на одну позицию влево. Четвёрка и пятёрка — шагом марш! А представь, если массив на овердохуища элементов? Это ж каждый раз переставлять их всех, как мартышлюшек в зоопарке! Вот поэтому сложность и получается O(n) — чем длиннее массив, тем дольше возня.
Но, блядь, есть же и свет в конце тоннеля! Если ты такой хитрожопый и хочешь удалить строго последний элемент через pop() — вот это да, это O(1), красота! Потому что там никого сдвигать не надо, просто отрезал хвост — и всё, в рот меня чих-пых!
Так что запомни: ковыряться в середине — это пиздопроебибна по времени, а работать с концом — почти мгновенно. Вывод? Если надо часто удалять — думай головой, э бошка думай, может, тебе не массив, а что-то другое нужно!