diff nested JavaScript objects