Как можно клонировать объект, в котором есть массивы с новым оператором распространения?
Пример объекта:
vehicles: {
cars: [1, 2],
boats: [3, 4]
}
Я хочу новый объект с массивами в нем. В этом новом объекте я хочу иметь возможность изменять или добавлять массив без ссылки на объект транспортных средств.
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);