В JavaScript есть две пары методов для добавления и удаления элементов, каждая работает на противоположных концах массива с очень разными характеристиками производительности.
push() и pop() — конец массиваЭти методы изменяют последний элемент массива:
push(value) — добавляет один или несколько элементов в конецpop() — удаляет и возвращает последний элементconst arr = [1, 2, 3];
arr.push(4); // [1, 2, 3, 4]
arr.pop(); // [1, 2, 3]
Оба выполняются за O(1) — константное время — потому что ни один из существующих элементов не нужно переставлять.
shift() и unshift() — начало массиваЭти методы изменяют первый элемент массива:
unshift(value) — добавляет один или несколько элементов в началоshift() — удаляет и возвращает первый элементconst arr = [1, 2, 3];
arr.unshift(0); // [0, 1, 2, 3]
arr.shift(); // [1, 2, 3]
Оба выполняются за O(n) — линейное время — потому что каждый оставшийся элемент должен быть переиндексирован после операции.
| Метод | Позиция | Сложность времени |
|---|---|---|
push() / pop() | Конец | O(1) |
shift() / unshift() | Начало | O(n) |
Предпочитай push() и pop() в производительно-критичном коде, особенно с большими массивами. Используй shift() и unshift() при работе с маленькими массивами или когда изменение элемента в начале массива логически необходимо — например, при реализации очереди.
Метод push() работает за O(1) потому что ему нужно только добавить элемент в конец без переиндексации существующих элементов массива.
Новый — ещё не проверен сообществом
Вы