5/20/2026 at 9:38:20 PM
> Upsert (https://github.com/tc39/proposal-upsert): [Weak]Map.prototype.getOrInsert(), [Weak]Map.prototype.getOrInsertComputed()Their usage of upsert appears different than I was used to:
Me: Upsert = Update or Insert
Them: Upsert = Get or Insert
by jdthedisciple
5/20/2026 at 9:51:36 PM
The proposal used to do more thing and we didn't change the URL after we ultimately arrived at this set of APIs.by bakkoting
5/21/2026 at 2:49:05 AM
> Their usage of upsert appears different than I was used to: > Them: Upsert = Get or InsertI agree that their choice of labeling the proposal as "upsert" is less than ideal. However, this functionality is reminiscent of a very useful Perl capability known as autovivification[0] as described in the motivation section:
A common problem when using a Map or WeakMap is how to
handle doing an update when you're not sure if the key
already exists in the map.
0 - https://en.wikipedia.org/wiki/Autovivification
by AdieuToLogic
5/20/2026 at 11:01:34 PM
Reminds me of the weird C++ map operator[] behavior.If you use that operator and the value doesn't exist, it'll default create one and return a reference to that.
And as I'm writing this I realize why... references cannot be `null`.
by OptionOfT
5/21/2026 at 12:26:52 AM
what is the value of an "update or insert" call on `Map`? is that not just set?`getOrInsert` here seems to be the Python "set_default" method on dicts, which is very useful at avoiding tedium in some basic data munging
by rtpg
5/21/2026 at 2:52:54 AM
> what is the value of an "update or insert" call on `Map`?It gives a caller the option of alternate logic based on the existence, or lack thereof, of a value.
> is that not just set?
No. The semantics of a "set" operation would overwrite an existing entry (if one exists).
by AdieuToLogic