Я хочу клонировать объект, а затем изменить его, однако, когда я это делаю, исходный объект также изменяется:
let items = result.Project.ItemGroup[1].Build;
let newItem = { ...items[0] };
newItem.$.Include = `test`;
После того, как я назначаю объект newItem
, значение items[0]
также изменяется.
Распространение делает только копию мелкий. Вы не меняете то, что скопировали, вы меняете объект в его свойстве $
, которое вы не копировали. items[0].$
и newItem.$
оба относятся к объекту такой же:
const items = [
{
$: {
Include: "test"
}
}
];
let newItem = {...items[0]};
console.info(items[0].$ === newItem.$); // true
Вам понадобится что-то вроде этого, чтобы также клонировать объект $
:
let newItem = {...items[0], $: {...items[0].$}};
const items = [
{
$: {
Include: "test"
}
}
];
let newItem = {...items[0], $: {...items[0].$}};
console.info(items[0].$ === newItem.$); // false
newItem.$.Include = "updated";
console.info(items[0].$.Include); // "test"
console.info(newItem.$.Include); // "updated"