Como você clona uma matriz de objetos em Javascript?

... onde cada objeto também tem referências a outros objetos na mesma matri

Quando surgiu esse problema, pensei em algo como

var clonedNodesArray = nodesArray.clone()

existiria e procurou informações sobre como clonar objetos em javascript. Eu encontrei umquestã no StackOverflow (respondido pelo mesmo @JohnResig) e ele apontou que com o jQuery você poderia fazer

var clonedNodesArray = jQuery.extend({}, nodesArray);

para clonar um objeto. Eu tentei isso, porém, isso apenas copia as referências dos objetos na matriz. Então, se eu

nodesArray[0].value = "red"
clonedNodesArray[0].value = "green"

o valor de nodesArray [0] e clonedNodesArray [0] será "verde". Então eu tentei

var clonedNodesArray = jQuery.extend(true, {}, nodesArray);

que copia profundamente um objeto, mas recebi " muita recursão "e"control stack overflow "mensagens do Firebug e do Opera Dragonfly, respectivamente.

Como você faria? Isso é algo que nem deveria ser feito? Existe uma maneira reutilizável de fazer isso em Javascript?

questionAnswers(30)

yourAnswerToTheQuestion