2016-06-01 6 views
-2

Ich habe den folgenden Code, der Wert der Variablen kopiert, dann ändern Sie den Wert.Javascript lösen Variablen

var a = [{name: 'John Doe'}]; 
 
var b = a; 
 

 
document.write(b[0].name + '<br />'); 
 
document.write(a[0].name + '<br /><br />'); 
 

 
b[0].name = 'Jane Doe'; 
 

 
document.write(b[0].name + '<br />'); 
 
document.write(a[0].name + '<br />');

Aber irgendwie, dass auch erster Variablenwert

ändern

Wie kann ich Variablen A den Wert zu halten?

+1

Sie müssen 'a' tief klonen, eine Möglichkeit, es zu tun ist' var b = JSON.parse (JSON.stringify (a)) ' –

+0

Mögliche Betrüger von: http://stackoverflow.com/questions/15722433/javascript-copy-array-to-new-array – Oisin

+0

Die Variable a wird durch Verweis in b übergeben. Da a und b die gleiche Referenz haben, ändert sich auch die andere, wenn Sie etwas ändern. Um dies zu verhindern, müssen Sie eine Kopie von a auf b erstellen und alle einzelnen Eigenschaften kopieren. – nurdyguy

Antwort

0

Sie weisen die a-Referenz einfach b zu. Möglicherweise möchten Sie das Array kopieren, sodass Änderungen an a nicht in b widergespiegelt werden. Die verschiedenen Zuweisungen in JavaScript finden Sie unter this thread.

Werfen Sie auch einen Blick auf fastest way to duplicate an array. Es geht um die Geschwindigkeit verschiedener Array-Kopiermethoden. schnelle Antwort ist:

var b = a.slice(); 

Die slice() Methode erzeugt ein neues Array mit den gleichen Elementen, als das Original. Aber Vorsicht, es ist nur ein shallow copy. Sie können auch die Methoden JSON.stringify() und JSON.parse() verwenden, um eine Tiefenkopie zu erstellen.