Como posso obter uma lista das diferenças entre dois gráficos de objetos JavaScript?

Quero poder obter uma lista de todas as diferenças entre dois gráficos de objetos JavaScript, com os nomes e os valores das propriedades em que os deltas ocorrem.

Pelo que vale a pena, esses objetos geralmente são recuperados do servidor como JSON e normalmente não têm mais do que um punhado de camadas (isto é, pode ser uma matriz de objetos que possuem dados e depois arrays com outros objetos de dados).

Quero não apenas ver as alterações nas propriedades básicas, mas também diferenças no número de membros de uma matriz, etc. etc.

Se eu não receber uma resposta, provavelmente acabarei escrevendo isso sozinho, mas espero que alguém já tenha feito esse trabalho ou conheça alguém que o tenha feito.

EDIT: Esses objetos normalmente terão uma estrutura muito próxima um do outro, portanto não estamos falando de objetos que são totalmente diferentes um do outro, mas que podem ter 3 ou 4 deltas.

questionAnswers(9)

yourAnswerToTheQuestion