Hallo,
Ich habe einen Teil eines assoziativen Arrays an das selbige angehängt (kopiert) und wollte diverse Werte dann ändern. Die gewünschten Werte wurden auch geändert.
Allerdings die der Quellelemente auch.
Im alten Wiki stand der Hinweis, das eine Art Zeiger auf die Objekte gespeichert wird.
Einen solchen Hinweis vermisse ich im aktuellen Wiki.
Mit der Suchfunktion fand ich diverse Erklärungen, das Texte tatsächlich kopiert Objekte hingegen nur verlinkt werden.
Ein Lösungsweg zu einer echten Kopie fand ich jedoch nirgendwo.
Selbst wenn ich die fraglichen Objekte mittels Schleife durchlaufe und dann per push-Methode anhänge (auch über ein eigens dafür erstelltes Array) bleibt es doch nur ein Verweis.
gekürztes Beispiel-Array:
var camListe = [
{
"LfdBearbId": 1,
"BearbeitungTab": "TabHBohrO",
"Bezeichnung": "",
"FraesProg": "H_BLD_Pneu",
"XPos": "21",
"BemassungsArt": "1"
},
{
"LfdBearbId": 2,
"BearbeitungTab": "TabHBohrO",
"Bezeichnung": "",
"FraesProg": "H_BLD_Pneu",
"XPos": "32",
"BemassungsArt": "2"
},
{
"LfdBearbId": 3,
"BearbeitungTab": "TabHBohrO",
"Bezeichnung": "",
"FraesProg": "H_BLD_Pneu",
"XPos": "64",
"BemassungsArt": "2"
}
]
Wenn jetzt Objekt 1 und 2 als Kopie ans Ende angehängt werden soll, ginge das mit
for (var a=0;a<2;a++) { camListe.push(camListe[a]) }
auch mit der copyWithin()-Methode ist es mir gelungen was aber für meinen Geschmack doch recht kompliziert ist.
Werte können dann mit
camListe[3]['XPos'] = 'Neuer Wert'
geändert werden (inklusive dem Quellobjekt 😟).
Alternativ kann man auch mit
camListe.splice(camListe.length,0,camListe.slice(0,2))
//oder
camListe.push(camListe.slice(0,2))
die Werte duplizieren was dann allerdings als zusätzliches Array eingebunden wird und ich dann auch nicht aufgelöst bekomme.
Kennt jemand eine Möglichkeit eine "echte" Kopie von Objekten zu erstellen?