Переназначение переменной само по себе никогда не приведет к изменению существующего объекта или, по крайней мере, за пределами очень странных ситуаций. Когда вы делаете
itemX = itemY;
вы просто меняете значение, на которое указывает переменная itemX
, на itemY
. То, что изначально было itemX
, и объект, из которого пришло itemX
, не будут изменены. Чтобы мутировать объекты, вы всегда должны явно назначать новое значение для свойства объекта, например, с obj.foo
, obj['foo']
или, как в вашем коде, x[j] = y[i];
.