【发布时间】:2016-05-10 09:47:34
【问题描述】:
是否可以在 Javascript Map 中一步找到或添加元素?
我想一步完成以下操作(避免两次寻找钥匙的正确位置):
// get the value if the key exists, set a default value otherwise
let aValue = aMap.get(aKey)
if(aValue == null) {
aMap.set(aKey, aDefaultValue)
}
相反,我只想搜索一次密钥。
在 c++ 中,可以使用std::map::insert() 或std::map::lower_bound()
在 javascript 中,代码可能如下所示:
let iterator = aMap.getPosition(aKey)
let aValue = aMap.getValue(iterator)
if(aValue == null)
{
aMap.setWithHint(aKey, aValue, iterator)
}
或
let aValue = aMap.getOrSet(aKey, aDefaultValue)
我想这是不可能的,但我想确保我是正确的。我也很想知道为什么它是一个重要的功能是不可能的。
【问题讨论】:
-
我是否正确理解您担心
aKey在您的代码示例中必须被查找两次? -
是的,这就是问题所在。
-
一般来说,您不必担心 JavaScript 中的这些微优化。现代 JavaScript 引擎在处理这些方面做得很好。此外,据我所知,没有办法使用地图来防止这种情况发生。
标签: javascript dictionary find add