← Все вопросы

Как добавить элемент в массив в JavaScript — push, unshift или spread?

Задан 20 месяцев назад423 просмотров2 ответа
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 на месте.

Ваш ответ

, чтобы ответить на вопрос.