Jak można zaktualizować cały obiekt, powiedzmy:Zastąp wartość obiektu bez zastąpienia odniesienia
var x = {a:1}
function modify(obj) {
obj = {b:2}
}
modify(x)
console.log(x) // {a:1}
Ale utrzymać odniesienia? Chcę, aby obiekt został zmodyfikowany poza funkcją.
Mój przypadek korzystania lodash.pick
wewnątrz mojej funkcji:
if (whitelist) {
obj = _.pick(obj, whitelist)
}
I nie wydają się znaleźć pick
funkcję, która modyfikuje obiekt. Czy istnieje sposób, aby to zrobić, czy też muszę zacząć zwracać kopie obiektu?
Niezły sposób na zrobienie tego. I zgadzam się z twoim punktem końcowym. – Aravind
Skończyło się na tym, że użyłem lodash '_.cloneDeep' i zwróciłem nowy obiekt, ale byłoby to najlepsze rozwiązanie tego pytania. Zgadzam się, to jest okropna praktyka. – Garrett
Czy ktokolwiek może wyjaśnić, dlaczego jest tak okropny? Mój scenariusz jest taki, że mam dużą liczbę obiektów i korzystam z pomocniczego "obiektu referencyjnego", aby uzyskać do nich dostęp za pomocą ich identyfikatorów zamiast pętli w tablicy. Tj. "Modify (referenceObject [objectId], updatedObject);" –