Spread only makes a shallow copy. You're not changing what you copied, you're changing the object on its $
property, which you didn't copy. items[0].$
and newItem.$
both refer to the same object:
const items = [
{
$: {
Include: "test"
}
}
];
let newItem = {...items[0]};
console.log(items[0].$ === newItem.$); // true
You'd need something like this to also clone the $
object:
let newItem = {...items[0], $: {...items[0].$}};
const items = [
{
$: {
Include: "test"
}
}
];
let newItem = {...items[0], $: {...items[0].$}};
console.log(items[0].$ === newItem.$); // false
newItem.$.Include = "updated";
console.log(items[0].$.Include); // "test"
console.log(newItem.$.Include); // "updated"
(Or a general deep-clone function.)