是否可以在Javascript Map中一步找到或添加元素?
我想一步完成以下操作(避免两次找到正确的密钥位置):
let iterator = aMap.getPosition(aKey)
let aValue = aMap.getValue(iterator)
if(aValue == null)
{
aMap.setWithHint(aKey, aValue, iterator)
}
相反,我只想搜索一次密钥。
在c ++中,可以使用std::map::insert()或std::map::lower_bound()
在javascript中,代码可能如下所示:
let aValue = aMap.getOrSet(aKey, aDefaultValue)
或
{{1}}
我认为这是不可能的,但我想确保我是正确的。此外,我有兴趣知道为什么它不可能,而它是一个重要的功能。
答案 0 :(得分:2)
无论如何必须进行查找,如果你避免它就没那么重要,至少在引擎进行优化之前是这样。
但是Map.has
是一个更好的解决方案,应该比Map.get()
快一点。例如:
myMap.has(myKey) ? true : myMap.set(myKey, myValue)
除非您是谷歌规模,否则效果应该与此级别无关。但如果它是一个严重的瓶颈,那么在可预见的未来,阵列应该比Map / Set更快。