In this case, a is changed.
var a = [{a: 1, b: 2}, {a: 3, b: 4}, {a : 5, b : 6}];
a.forEach(x => x.a = 7);
0: {a: 7, b: 2}
1: {a: 7, b: 4}
2: {a: 7, b: 6}
But in this case a is not changed.
var a = [{a: 1, b: 2}, {a: 3, b: 4}, {a : 5, b : 6}];
a.forEach(x => x = {...x, a:7});
0: {a: 1, b: 2}
1: {a: 3, b: 4}
2: {a: 5, b: 6}
what is difference?