在Javascript ES6 Map中获取或设置元素?

时间:2016-05-10 09:47:34

标签: javascript dictionary find add

是否可以在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}}

我认为这是不可能的,但我想确保我是正确的。此外,我有兴趣知道为什么它不可能,而它是一个重要的功能。

1 个答案:

答案 0 :(得分:2)

无论如何必须进行查找,如果你避免它就没那么重要,至少在引擎进行优化之前是这样。

但是Map.has是一个更好的解决方案,应该比Map.get()快一点。例如:

myMap.has(myKey) ? true : myMap.set(myKey, myValue)

除非您是谷歌规模,否则效果应该与此级别无关。但如果它是一个严重的瓶颈,那么在可预见的未来,阵列应该比Map / Set更快。