STARTBEITRAG
const treffer = users.find(u => u.id === 3); Danach ändere ich treffer.name. Jetzt hat der Nutzer im Array ebenfalls den neuen Namen. find sucht doch nur, oder kopiert es auch?
Lernfragen und Praxis · 6 Antworten
STARTBEITRAG
const treffer = users.find(u => u.id === 3); Danach ändere ich treffer.name. Jetzt hat der Nutzer im Array ebenfalls den neuen Namen. find sucht doch nur, oder kopiert es auch?
find gibt hier das gefundene Objekt zurück. Es erstellt keine Kopie davon. treffer und der entsprechende Arrayeintrag verweisen auf dasselbe Objekt.
find gibt hier das gefundene Objekt zurück. Es erstellt keine Kopie davon. treffer und der entsprechende Arrayeintrag verweisen auf dasselbe Objekt.
Dann würde const bearbeitung = {...treffer} fürs Ändern von name reichen? Ich will erstmal nur eine Vorschau bauen.
Dann würde const bearbeitung = {...treffer} fürs Ändern von name reichen? Ich will erstmal nur eine Vorschau bauen.
Für diese direkt enthaltene Eigenschaft ja, sofern du vorher geprüft hast, dass überhaupt ein Treffer existiert. Verschachtelte Objekte werden durch Spread nicht ebenfalls kopiert.
Für diese direkt enthaltene Eigenschaft ja, sofern du vorher geprüft hast, dass überhaupt ein Treffer existiert. Verschachtelte Objekte werden durch Spread nicht ebenfalls kopiert.
Gut, dann erst if (!treffer) abfangen. adresse.ort lasse ich aus dem Beispiel erstmal raus, sonst baue ich direkt die nächste Falle ein.
Ein Test kann beide Erwartungen zeigen: Die Kopie hat den neuen Namen, der ursprüngliche Eintrag behält den alten.
Ein Test kann beide Erwartungen zeigen: Die Kopie hat den neuen Namen, der ursprüngliche Eintrag behält den alten.
Und dazu der Fall ohne passende ID. Gerade bei find vergisst man den schnell, wenn die Beispieldaten immer zufällig passen.