Hallo,
besten Dank.
Das gibts übrigens schon in Lodash.
Ich möchte kein Framework für eine einzige Funktion verwenden.
Für mich richt dieser, mein Code nun ziemlich nach Pfusch und ich wollte fragen, ob man das nicht eleganter lösen kann.
So allgemein nicht. Wenn man den Anwendungsfall kennt vielleicht schon.
Hmmm... ich hoffe ich bekomme das nachvollziehbar hin:
Ich benutze Handlebars für client-seitiges templating. Dort hat jedes Template ein Model. Dieses Model ist ein Javascript Objekt welches Variablen definiert, die anschließend gerendert werden. Ich habe also ein großes Konfigurationsobjekt, welches meine default-Model definiert. Nun möchte ich dieses default-Model mit anderen Werten überschreiben. Dazu erstelle ich ein neues Objekt, welches nur die Objekte enthält welche ich überschreiben möchte.
Anders gesagt: ich habe default-Settings als Objekt und User-Settings als eigenständiges Objekt. Die user-Settings überschreiben meine default-Settings. Damit ich in den user-Settings auf die schnelle die gleiche Datenstruktur hinbekomme als in den default-Settings benötige ich diese Funktion.
Hmm... da fällt mir gerade ein: eine andere Möglichkeit wäre, dass ich die default-Settings klone (deep copy) und das dann meine user-Settings sind, die dann, erst im nächsten Schritt überschreibe. Damit hätte ich von vorn herein schon die gleiche Datenstruktur und müsste diese nicht erst nachbauen. Das scheint mir der bessere Weg. Sorry, dass ich nicht früher drauf gekommen bin.
Dein Ansatz ist erst mal in Ordnung. Nur wird die letzte Eigenschaft nie gesetzt. Am Ende der Schleife muss root[property] = val; oder ähnliches stehen. Beispiel:
Danke. Darum ging es mir. Wenn der Ansatz in Ordnung ist, dann passt das für mich. Die Lösung sah für mich nur ziemlich "hacky" aus. Vor allem die Übergabe des Pfades als String.
lg