← Все вопросы
Как добавить элемент в массив в JavaScript — push, unshift или spread?
7
Только начал с JS. Как добавить элемент в массив — в конец и в начало? Видел push и unshift, ещё какой-то спред [...arr]. Какой способ когда использовать, чтобы не накосячить?
2 ответа
11
✓ Принятый ответ — помог автору
Три основных способа.
1. push — добавить в конец (мутирует, возвращает новую длину):
const arr = [1, 2, 3];
arr.push(4); // [1, 2, 3, 4]
arr.push(5, 6); // можно сразу несколько → [1, 2, 3, 4, 5, 6]
2. unshift — добавить в начало (тоже мутирует):
const arr = [2, 3];
arr.unshift(1); // [1, 2, 3]
3. spread — создать новый массив (исходный не трогаем):
const arr = [2, 3];
const withFirst = [1, ...arr]; // [1, 2, 3] в начало
const withLast = [...arr, 4]; // [2, 3, 4] в конец
console.log(arr); // [2, 3] — оригинал цел
Когда что брать:
- Обычный код, массив не жалко менять →
push/unshift(быстрее, читаемее). - Нельзя мутировать (React-стейт, чистые функции) → spread, он даёт новый массив.
Частая ошибка: думать, что push возвращает новый массив. Нет — он возвращает длину:
const arr = [1, 2];
const result = arr.push(3);
console.log(result); // 3 (длина!), а не [1, 2, 3]
console.log(arr); // [1, 2, 3]
4
Если надо склеить два массива, тоже spread или concat:
const a = [1, 2];
const b = [3, 4];
const all = [...a, ...b]; // [1, 2, 3, 4]
const all2 = a.concat(b); // тоже [1, 2, 3, 4]
Оба возвращают новый массив и не меняют исходные. А вот push(...b) добавит элементы b в a на месте.
Ваш ответ
, чтобы ответить на вопрос.