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