Clone Object с массивами с использованием оператора распространения

1

Как можно клонировать объект, в котором есть массивы с новым оператором распространения?

Пример объекта:

vehicles: { 
  cars:  [1, 2],
  boats: [3, 4]
}

Я хочу новый объект с массивами в нем. В этом новом объекте я хочу иметь возможность изменять или добавлять массив без ссылки на объект транспортных средств.

  • 0
    Можете ли вы указать содержание вашего нового объекта?
  • 0
    Оператор распространения делает мелкие копии, поэтому, к сожалению, на любые глубокие объекты все еще будут ссылаться.
Теги:
spread-syntax

1 ответ

3
Лучший ответ

Object.assign и оператор распространения создают мелкие клоны, только на один уровень, за исключением того, на что они ссылаются. Лучший способ, которым я нашел (спасибо MDN), - использовать функции JSON для создания истинного клона.

let vehicles = { 
  cars:  [1, 2],
  boats: [3, 4],
};

let test = JSON.parse(JSON.stringify(vehicles));

console.log(vehicles, test);

test.cars[0] = 5;
vehicles.cars[0] = 7;

console.log(vehicles, test);
  • 0
    Отличное решение!
  • 0
    Что делать, если у вас есть большой объект? Будет ли он справиться в этой ситуации?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню