Wie kann man ein ganzes Objekt aktualisieren, sagen:ohne Bezug zu ersetzen
var x = {a:1}
function modify(obj) {
obj = {b:2}
}
modify(x)
console.log(x) // {a:1}
Aber die Referenz halten? Ich möchte, dass das Objekt außerhalb der Funktion geändert wird.
Mein speziellen Fall verwendet lodash.pick
in meiner Funktion:
if (whitelist) {
obj = _.pick(obj, whitelist)
}
Ich kann keine pick
Funktion zu finden scheinen, dass das Objekt modifiziert. Gibt es eine Möglichkeit, dies zu tun, oder muss ich Kopien des Objekts zurückgeben?
Schöne Art, dies zu tun. Und ich stimme deinem Abschlusspunkt zu. – Aravind
Am Ende habe ich lodash '_.cloneDeep' verwendet und ein neues Objekt zurückgegeben, aber das wäre die beste Lösung für die Frage. Und einverstanden, das ist eine schreckliche Praxis. – Garrett
Kann jemand erklären, warum das so schrecklich ist? Mein Szenario besteht darin, dass ich ein großes Array von Objekten habe und ein unterstützendes "Referenzobjekt" verwende, um auf diese mit ihren IDs zuzugreifen, anstatt das Array durchlaufen zu müssen. Ie 'modify (referenceObject [objectId], updateObject);' –