如何使用新的扩展运算符克隆其中包含数组的对象?
示例对象:
vehicles: {
cars: [1, 2],
boats: [3, 4]
}
我想要一个包含数组的新对象。在那个新对象中,我希望能够在不引用和影响车辆对象的情况下更改或添加到数组中。
答案 0 :(得分:3)
Object.assign和spread运算符创建浅层克隆,只有一层深度,超出它们的引用范围。我找到的最好方法(Thanks 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);