https://www.atatus.com/blog/deep-cloning-in-javascript/
Deep Cloning in JavaScript