我想复制一个变量的对象来分配给另一个变量,并且只更改新变量对象中的一些属性,而不更改旧对象。
我为新变量创建新对象并更改属性,但是当打印出旧变量时也发生了更改。如何解决?
let thongTinMuaXeKhachA = {
iDluotmua:`abc129867`,
nguoiSohuu:{
ten: `Pham Van A`,
tuoi: 35,
gioTinh: `nam`,
namSinh: 1984,
diaChi: `ha noi`,
cccd: 12345678,
},
thongTinXe: {
tenXe: `Vinfast luxA 2.0`,
hangXe: `Vinfast`,
soCho: 5,
tocDoTrungBinh: 90,
mauSac: `Den`,
giaBan: 1200000000,
namSanXuat: 2019,
},
ngayMua: `26/01/2022`,
};
console.log(`Thong tin khach hang A:`,thongTinMuaXeKhachA);
console.log(`--------------------------`);
let thongTinMuaXeKhachB = Object.assign({},thongTinMuaXeKhachA);
thongTinMuaXeKhachB.nguoiSohuu.ten = `Pham Van B`;
console.log(thongTinMuaXeKhachA);
console.log(thongTinMuaXeKhachB);
这是因为即使你有一个新变量,你原来对象的引用也不会改变。你需要克隆你的对象。您可以使用展开运算符。
const original = { a: 1, b: 2 };
const clone = { ...original };
然后您可以使用克隆来进行更改。这将保留您的原始对象,并且仅更改克隆的对象。