Is it possible to find or add an element in one step in a Javascript Map?
I would like to do the following in one step (to avoid looking twice for the right place of the key):
// get the value if the key exists, set a default value otherwise
let aValue = aMap.get(aKey)
if(aValue == null) {
aMap.set(aKey, aDefaultValue)
}
Instead I would like to search for the key only once.
In c++, one can use std::map::insert() or std::map::lower_bound()
In javascript the code could look like this:
let iterator = aMap.getPosition(aKey)
let aValue = aMap.getValue(iterator)
if(aValue == null)
{
aMap.setWithHint(aKey, aValue, iterator)
}
or
let aValue = aMap.getOrSet(aKey, aDefaultValue)
I suppose that it is not possible, but I want to make sure I am correct. Also I am interested in knowing why it is not possible while it is an important feature.
The lookup has to happen anyway, it doesn't matter much if you avoid it, at least until the engines are optimized much more.
But Map.has is a nicer solution and should be a bit faster than Map.get(). For example:
myMap.has(myKey) ? true : myMap.set(myKey, myValue)
Performance should be irrelevant on this level unless you're google-scale. But if it's a serious bottleneck, an Array should still be faster than Map/Set for the forseeable future.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With