Как добавить новый элемент в начало массива в JavaScript?
Используйте метод unshift() для добавления элементов в начало массива
В JavaScript для добавления одного или нескольких элементов в начало массива существует встроенный метод unshift(). Он работает аналогично методу push(), но вместо добавления в конец добавляет элементы в начало, сдвигая все существующие элементы вправо.
Синтаксис и примеры
Метод unshift() принимает один или несколько аргументов и вставляет их в начало массива. Возвращает новую длину массива.
// Добавление одного элемента
let numbers = [2, 3, 4, 5];
numbers.unshift(1);
console.log(numbers); // [1, 2, 3, 4, 5]
// Добавление нескольких элементов
let fruits = ['banana', 'orange'];
fruits.unshift('apple', 'grape');
console.log(fruits); // ['apple', 'grape', 'banana', 'orange']
// Проверка возвращаемого значения
let arr = [10, 20];
let newLength = arr.unshift(5);
console.log(newLength); // 3 (новая длина массива)
console.log(arr); // [5, 10, 20]
Важные особенности метода unshift()
- Изменяет исходный массив — метод работает "на месте" (in-place), мутируя оригинальный массив. Это значит, что после вызова
unshift()исходный массив изменяется. - Может принимать любое количество аргументов — вы можете добавить сразу несколько элементов, перечислив их через запятую.
- Порядок добавления — элементы вставляются в том порядке, в котором они перечислены. Если вызвать
arr.unshift(a, b), то сначала в массиве окажетсяa, затемb, а потом старые элементы. - Производительность — метод
unshift()работает медленнее, чемpush(), особенно на больших массивах, потому что ему нужно сдвинуть все существующие элементы вправо. Для очень больших массивов (десятки тысяч элементов) это может быть заметно.
Альтернативный способ: использование spread-оператора (ES6+)
Если вы не хотите мутировать исходный массив, а создать новый, можно использовать spread-оператор ...:
let original = [2, 3, 4];
let newArray = [1, ...original];
console.log(newArray); // [1, 2, 3, 4]
console.log(original); // [2, 3, 4] (не изменился)
Этот подход создаёт новый массив, не затрагивая исходный, что часто предпочтительнее в функциональном программировании.
Что делать, если нужно добавить элемент в начало, но массив очень большой?
Для массивов с десятками тысяч элементов unshift() может быть неэффективным. В таких случаях рассмотрите:
- Использование связных списков (если структура данных позволяет).
- Переворот массива: добавляйте в конец, а потом переворачивайте.
- Использование TypedArray или других структур данных для критичных по производительности задач.
Однако для 99% повседневных задач (массивы до 10 000 элементов) unshift() работает вполне приемлемо.
Альтернативный подход: метод splice()
Метод splice() — это универсальный инструмент для работы с массивами. Он может добавлять, удалять и заменять элементы. Чтобы добавить элемент в начало массива с помощью splice(), нужно указать индекс 0 (начало массива), удалить 0 элементов и вставить нужные элементы:
let arr = [2, 3, 4];
arr.splice(0, 0, 1);
console.log(arr); // [1, 2, 3, 4]
// Добавление нескольких элементов
arr.splice(0, 0, -1, 0);
console.log(arr); // [-1, 0, 1, 2, 3, 4]
Сравнение с unshift()
splice(0, 0, ...)делает то же самое, что иunshift(), но синтаксически более громоздок.unshift()читается проще и понятнее для начинающих.splice()полезен, когда нужно одновременно удалить элементы и добавить новые, но для простого добавления в начало лучше использоватьunshift().
Когда использовать splice()?
Если вам нужно не только добавить элемент в начало, но и удалить несколько первых элементов, splice() может быть удобнее. Например, удалить первые 2 элемента и добавить 3 новых:
let data = [10, 20, 30, 40];
data.splice(0, 2, 1, 2, 3);
console.log(data); // [1, 2, 3, 30, 40]
Но для 99% случаев, когда нужно просто добавить элемент в начало, используйте unshift() — это стандартный и самый читаемый способ.
Ответов пока нет.
Войдите чтобы оставить ответ
Блоги