@Miron9900

Почему не работает клонирование?

Есть массив содержащий объекты:
let products = [
  {
    name: "Honor",
    tag: "Huawei-Honor-9x-Blue.jpg",
    price: 16990,
    inCart: 0,
  },
];

И функция возвращающая копию:
function listCart() {
  let productsCopy = [...products];
  return productsCopy;
}

При изменении копии, изменяется и главный:
let array = listCart();
array[0].name = "Mis";

5fbcc37319d0b400681277.png
Через slice(), concat, Array.from тоже не работает
Работает, если так:
let productsCopy = JSON.parse(JSON.stringify(arr));
Заранее спасибо.
  • Вопрос задан
  • 59 просмотров
Решения вопроса 2
qork
@qork
{ background: #F00B42 }
Ответ написан
Комментировать
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Потому, что ваш вариант возвращает копию массива, но объекты в нем не копируются. А вот это
let productsCopy = JSON.parse(JSON.stringify(arr));

Как раз создаст копию всей структуры не зависимо от вложенности.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы