JavaScript has somewhat annoying rules on this. Deep copies are required if you wish to avoid mutating.
const one = [0, 1, 2]; const two = one; two.push(3); console.log(one); console.log(two);
output:
[ 0, 1, 2, 3 ] [ 0, 1, 2, 3 ]
Note: slice works on arrays of primitives not objects
const one = [0, 1, 2]; const two = one.slice(); two.push(3); console.log(one); console.log(two);
output:
[ 0, 1, 2 ] [ 0, 1, 2, 3 ]
But objects will still refer to the original arrays even with slice
const one = [ { name: 'kalen', age: 23 }, { name: 'kailyn', age: '22', } ]; const two = one.slice(); two[0].name = 'Patrick'; console.log(one); console.log(two);
output:
[ { name: 'Patrick', age: 23 }, { name: 'kailyn', age: '22' } ] [ { name: 'Patrick', age: 23 }, { name: 'kailyn', age: '22' } ]