Ich versuche, ein Array von Objekten einem anderen Array zuzuordnen, aber wenn ich das neue Array erstellt habe und in anderen Funktionen den Wert ändere, ändert sich auch das ursprüngliche Array (was nicht ok). Könnte ich einen anderen Weg benutzen? Dies ist ein Beispiel: http: //codepen.io/Xiwi/pen/rLMbYpArray eines Objekt-Inhalts einem neuen Array zuweisen
2
A
Antwort
3
Sieht so aus, als müssten Sie das Array kopieren/klonen, damit es nicht durch Referenz geändert wird.
Wenn Sie nur Primitive Types im Array Sie so tun können:
var test3 = JSON.parse(JSON.stringify(test2));
sonst benötigen Sie eine rekursive Lösung und spezifischere in Ihrer Frage zu sein.
Beispiel:
var test1 = [{name: 'test1'}];
var test2 = [{name: 'test2'}];
var test3 = JSON.parse(JSON.stringify(test2));
test3[0].name = 'test3';
// Open console
console.log('Test2: ',test2[0]); // Object {name: "test2"}
console.log('Test3: ',test3[0]); // Object {name: "test3"}
0
Objekte sind im wesentlichen Referenzen. Sie müssen ein neues Objekt erstellen und die Werte eines anderen Objekts zuweisen:
var test3 = [ Object.assign({}, test2[0]) ];
0
Verwenden Sie einfache .map
ein Array von Objekten in einen anderen zu kopieren.
var test1 = [{name: 'test1'}];
var test2 = [{name: 'test2'}];
//var test3 = test2.slice(0); //doesn't work. objects are still references
var test3 = test2.map(function(obj){
//return obj; //doesn't work. objects are still references
var o={}; //create brand new object
for(var prop in obj)
o[prop]=obj[prop];//assign properties
return o;//works
});
test3[0].name = 'test3';
// Open console
console.log('Test2: ',test2[0]);
console.log('Test3: ',test3[0]);
Verwandte Themen
- 1. Zuweisen eines Arbeitsblattbereichs zu einem Array
- 2. Werte einem NumPy-Array zuweisen
- 3. Zuweisen eines Speicherblocks zu einem mehrdimensionalen Array in C++
- 4. Delphi 7 - Zuweisen eines TImage zu einem Array von TImage
- 5. kann kein Array zu einem anderen Array in Typoskript zuweisen
- 6. Einem Array zuweisen und aufgetauchte Nullwerte
- 7. Java: String-Array-Element [] einem String zuweisen?
- 8. Einfügen eines neuen Linien mit fehlenden Werten in einem Array
- 9. NullPointerException beim Hinzufügen eines neuen Objekts zu einem Array
- 10. Extrahieren eines Array aus einem Array numpy
- 11. Scala leeren Array zuweisen
- 12. zuweisen Auswahlliste Werte Array
- 13. Zuweisen Array mehrdimensionales Array und VizeVers
- 14. Java-GUI Array-Wert zuweisen
- 15. Assay ExecuteReader dem Array zuweisen
- 16. Füllen eines anderen Array aus Array - Javascript
- 17. zuweisen Variablen auf ein Array
- 18. zuweisen Wert auf char Array
- 19. Standardwerte beim Erstellen eines neuen Elements zuweisen
- 20. Bash Problem beim Zuweisen eines Array-Index in einer Schleife
- 21. C# Char- und Char-Array String zuweisen?
- 22. Zuweisen eines Zeigers eines Datensatzes zu einem Array von Char in Delphi - komm wieder?
- 23. php: Zuweisen von Array Keys beim Erstellen von Multilevel-Array
- 24. Zuweisen eines Werts zu einem dynamischen Array-Element führt zu einem Index außerhalb des Bereichs Fehler
- 25. So erstellen Sie eine Kopie eines verschachtelten Array in einem Array Array-Struktur
- 26. Subversion-Commit einem neuen JIRA-Ticket zuweisen
- 27. Array innerhalb eines anderen Array
- 28. Hinzufügen eines Array-Elements zu einem Array in einer Struktur
- 29. Summe die Elemente eines Array-Schlüssel in einem mehrdimensionalen Array
- 30. Haupt Panik 42 beim Zuweisen dynamischer Array
Sie müssen nicht serialisiert werden, glaube ich '[] .splice (0,0, arr);' eine Kopie von Primitiven – kirinthos
leider 'do [] .concat (arr)' – kirinthos
@kirinthos Nein. So haben Sie das gleiche Problem. Überprüfen Sie hier: https://jsfiddle.net/jbL0vm9m/ – Sergio