find liefert ein Objekt. Warum ist danach auch mein Array verändert?

Lernfragen und Praxis · 6 Antworten

STARTBEITRAG

#1

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?

0

Antworten

6
Antwort auf das Thema
#2

find gibt hier das gefundene Objekt zurück. Es erstellt keine Kopie davon. treffer und der entsprechende Arrayeintrag verweisen auf dasselbe Objekt.

0
Antwort auf Antwort

Antwort auf #2 von tom_dev

find gibt hier das gefundene Objekt zurück. Es erstellt keine Kopie davon. treffer und der entsprechende Arrayeintrag verweisen auf dasselbe Objekt.
#3

Dann würde const bearbeitung = {...treffer} fürs Ändern von name reichen? Ich will erstmal nur eine Vorschau bauen.

0
Antwort auf Antwort

Antwort auf #3 von miko

Dann würde const bearbeitung = {...treffer} fürs Ändern von name reichen? Ich will erstmal nur eine Vorschau bauen.
#4

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.

0
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.
#5

Gut, dann erst if (!treffer) abfangen. adresse.ort lasse ich aus dem Beispiel erstmal raus, sonst baue ich direkt die nächste Falle ein.

0
Antwort auf das Thema
#6

Ein Test kann beide Erwartungen zeigen: Die Kopie hat den neuen Namen, der ursprüngliche Eintrag behält den alten.

0
Ein Test kann beide Erwartungen zeigen: Die Kopie hat den neuen Namen, der ursprüngliche Eintrag behält den alten.
#7

Und dazu der Fall ohne passende ID. Gerade bei find vergisst man den schnell, wenn die Beispieldaten immer zufällig passen.

0