Learn JavaScript

concat() - метод для объединения массивов в JavaScript

concat() объединяет массивы и возвращает новый массив.

Это удобный метод, когда нужно склеить несколько массивов или добавить значения без изменения исходного массива.

Синтаксис

array.concat()
array.concat(value1)
array.concat(value1, value2, ...)

В аргументы можно передавать:

  • другие массивы
  • отдельные значения

Что делает concat()

concat() берёт исходный массив и добавляет к нему переданные значения.

const numbers = [1, 2];
const result = numbers.concat([3, 4]);

console.log(result);  // [1, 2, 3, 4]
console.log(numbers); // [1, 2]

Главное здесь в том, что исходный массив не меняется.

Объединение двух массивов

Самый частый сценарий - склеить два массива в один.

const first = ["a", "b"];
const second = ["c", "d"];

const result = first.concat(second);

console.log(result); // ["a", "b", "c", "d"]

Несколько массивов сразу

Можно передать сразу несколько массивов:

const result = [1].concat([2, 3], [4, 5]);

console.log(result); // [1, 2, 3, 4, 5]

Это удобно, когда нужно собрать один массив из нескольких частей.

concat() с отдельными значениями

В concat() можно передавать не только массивы, но и обычные значения:

const result = [1, 2].concat(3, 4);

console.log(result); // [1, 2, 3, 4]

Если передать массив, в результат попадут его элементы.

Если передать обычное значение, оно попадёт как один элемент.

Исходный массив не меняется

concat() не работает “на месте”. Он всегда создаёт новый массив.

const items = ["a", "b"];
const result = items.concat("c");

console.log(items);  // ["a", "b"]
console.log(result); // ["a", "b", "c"]

Это одно из главных отличий concat() от push().

concat() и push()

Оба способа могут добавить элементы, но работают по-разному.

const numbers = [1, 2];

const result = numbers.concat(3);

console.log(numbers); // [1, 2]
console.log(result);  // [1, 2, 3]

concat() не меняет исходный массив.

push() меняет исходный массив и возвращает новую длину.

concat() и spread

Во многих случаях тот же результат можно получить через spread:

const result = [...[1, 2], ...[3, 4]];

console.log(result); // [1, 2, 3, 4]

В современном коде spread часто выглядит короче, но concat() всё ещё остаётся понятным и нормальным способом объединения массивов.

Поверхностное объединение

concat() не делает глубокое объединение вложенных массивов и объектов.

const first = [[1], [2]];
const second = [[3]];

const result = first.concat(second);

console.log(result); // [[1], [2], [3]]

Если внутри лежат объекты или вложенные массивы, они не копируются глубоко.

Когда это полезно

concat() удобно использовать, когда:

  • нужно объединить два или несколько массивов
  • нужно добавить значения без изменения исходного массива
  • хочется получить новый массив как результат

Частые ошибки

Думать, что concat() меняет исходный массив

const numbers = [1, 2];

numbers.concat(3);

console.log(numbers); // [1, 2]

Если результат не сохранить, исходный массив останется прежним.

Путать concat() и push()

const numbers = [1, 2];
const result = numbers.concat(3);

console.log(result); // [1, 2, 3]

Здесь result - это новый массив. У push() поведение другое.

Считать, что concat() делает глубокую копию

const list = [{ value: 1 }];
const copy = list.concat();

Массив будет новым, но вложенные объекты внутри останутся общими.

Быстрая памятка

  • concat() объединяет массивы и значения в новый массив
  • исходный массив не меняется
  • в аргументы можно передавать массивы и отдельные элементы
  • concat() возвращает новый массив
  • для похожей задачи в современном коде часто используют spread

Коротко

concat() - это удобный способ объединить массивы без изменения исходных данных. Главное, что стоит запомнить: метод возвращает новый массив, а не меняет старый.