Проверяет понимание способов копирования массивов в JavaScript и различий между поверхностной и глубокой копией.
Копирование массива — частая задача, но важно понимать, что большинство нативных методов создают только поверхностную (shallow) копию. Это значит, что сам массив новый, но вложенные объекты остаются общими по ссылке.
arr.slice() — возвращает новый массив с элементами от start до end.arr.concat() — без аргументов возвращает копию.Array.from(arr) — создаёт массив из итерируемого объекта.[...arr] — spread-оператор, самый современный и читаемый вариант.const original = [1, 2, { a: 3 }];
const copy1 = original.slice();
const copy2 = [...original];
const copy3 = Array.from(original);
copy1[0] = 99;
console.log(original[0]); // 1 — примитивы не связаны
copy1[2].a = 42;
console.log(original[2].a); // 42 — объект общий!Если массив содержит вложенные объекты и их нужно изолировать, используйте structuredClone(arr) (современный стандарт) или JSON.parse(JSON.stringify(arr)) (не работает с Date, undefined, функциями).
const deep = structuredClone(original);
deep[2].a = 100;
console.log(original[2].a); // 3 — независимоИтог: для плоских массивов достаточно slice или spread, а для вложенных структур применяйте structuredClone, чтобы избежать неожиданных мутаций.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию