Что за фигня с приравниванием в js?
Все нормально, просто объекты передаются ссылками, вам нужно создавать новый объект, если хотите управлять им независимо.
Например:let anotherObj = Object.assign({}, obj)
Или более продвинутые методы отсюда underscorejs.org или его форка https://lodash.com/docs/4.17.4 (рекомендую), в последнем есть и рекурсивный merge может быть полезным, так же стоит помнить что assing не работает в IE 10-11
Не мешало бы немного ознакомиться с объектами в JavaScript. Когда вы "приравниваете" объекты, вы на самом деле приравниваете ссылки. То есть разные переменные указывают на один и тот же участок памяти. Для того, чтобы избежать этого поведения, следует использовать "клонирование". Делать это можно разными способами, от ручного (создаете вручную объект и приравниваете по очереди все поля от другого) до библиотечных, почти все либы jQuery, Angular etc. имеют функции клонирования.
Вот, по ссылке, почитайте https://stackoverflow.com/questions/728360/how-do-...