Комментарии (1)
🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Что возвращает метод concat()?
Метод concat() возвращает новый массив, состоящий из элементов исходного массива, за которыми следуют элементы, переданные в качестве аргументов. Это один из неизменяющих (immutable) методов массива в JavaScript — он не изменяет исходный массив, а создаёт и возвращает новый.
Основные характеристики возвращаемого значения:
- Всегда новый массив — даже если не переданы аргументы или исходный массив пуст.
- Поверхностная копия (shallow copy) — элементы нового массива являются ссылками на те же объекты, что и в исходном.
- Сохранение порядка — элементы добавляются в том порядке, в котором переданы аргументы.
Синтаксис и примеры:
const arr1 = [1, 2, 3];
const arr2 = [4, 5];
const result = arr1.concat(arr2);
console.log(result); // [1, 2, 3, 4, 5]
console.log(arr1); // [1, 2, 3] — исходный массив не изменился
Особенности работы:
- Аргументы могут быть любого типа — примитивы, массивы, объекты. Если передаётся массив, его элементы "распаковываются" (кроме вложенных массивов).
- Не изменяет
this— безопасен для функционального программирования. - Работает с разреженными массивами — сохраняет "дыры" (пустые слоты).
// Пример с разными типами аргументов
const base = [1, 2];
const newArray = base.concat(3, [4, 5], [[6]]);
console.log(newArray); // [1, 2, 3, 4, 5, [6]]
// Обратите внимание: вложенный массив [[6]] не был распакован
Сравнение с spread-оператором:
В современном JavaScript аналогичного результата можно достичь с помощью spread-оператора:
const arr1 = [1, 2];
const arr2 = [3, 4];
const concatResult = arr1.concat(arr2);
const spreadResult = [...arr1, ...arr2];
console.log(concatResult); // [1, 2, 3, 4]
console.log(spreadResult); // [1, 2, 3, 4]
Ключевые отличия:
concat()— метод, вызываемый на массиве- Spread-оператор — синтаксис, работающий внутри литералов массивов
concat()может принимать примитивы напрямую, а spread — только итерируемые объекты
Важные нюансы:
- Для вложенных объектов — создаётся поверхностная копия:
const obj = { x: 10 };
const arr1 = [obj];
const arr2 = arr1.concat();
arr2[0].x = 20;
console.log(arr1[0].x); // 20 — объект тот же!
- Производительность — в большинстве случаев
concat()работает быстрее, чем последовательные вызовыpush()с spread, особенно для больших массивов. - Использование с
null/undefined— эти значения передаются как есть:
console.log([1].concat(null, undefined)); // [1, null, undefined]
Практическое применение:
- Объединение данных из нескольких источников
- Иммутабельные обновления в Redux или React state
- Создание копий с добавлением новых элементов
Таким образом, concat() — это предсказуемый и безопасный метод для создания нового массива путём объединения существующего с дополнительными значениями, сохраняющий исходные данные неизменными.