Привет! Как скопировать массив или объект в javascript?
1) Копирование массива
const names = ['Oliver', 'Sophia', 'William', "Emma', 'Ethan'];
/* неправильно, copyNames содержит ссылку на names, при изменении элементов copyNames изменится names */
const copyNames = names;
/* правильно, copyNames независимая копия, под неё в памчти выделено собственное место и её можно менять не изменяя names */
const copyNames = names.slice();
/* так тоже можно скопировать массив */
const copyNames = [...names];
2) Копирование объектов
const user = {login: 'kruglov', password: '3456'};
/* Как и для массива, так неверно, мы получим ссылку на оригинальный объект */
const copyUser = user;
/* можно использовать spread-оператор */
const copyUser = {...user};
/* Для тех объектов, значения ключей которых - примитивы, можно использовать Object.assign() */
Object.assign(copyUser, user);
/* Можно в assign передать несколько объектов для копирования */
/* Для глубокого копирования объектов, ключи которых не примитивы, можно использовать JSON.parse */
const userCopy = JSON.parse(JSON.stringify(user));
/* Терзаем задачу дальше? - начиная с версии 17 NodeJS доступна функция structuredClone.
Еще можно использовать библиотеку lodash, функция cloneDeep */
/* в тексте поста переопределяются const переменные, поскольку они не будут вместе в одном коде, выбирайте подходящий */
Документация:
🔗 https://learn.javascript.ru/object-copy
🔗https://doka.guide/js/shallow-or-deep-clone/
#js #frontend