Javascript 正确处理散列中的唯一键

Javascript 正确处理散列中的唯一键,javascript,hash,Javascript,Hash,我意识到散列已经有了唯一的键,但我的问题是针对一个关于散列的特定用例(我觉得可能很常见) 我的网站上有一个谷歌地图(v3)。我从我的数据库中加载了一组位置,并在地图上的每个位置投掷标记。我在我的应用程序中遇到了一个问题,我看到每个位置都有重复的标记。我决定在addmarker函数的顶部添加一个检查,以使用先前放置的标记(按位置存储)的散列 markers={}; 功能添加标记(latlng){ 如果(!markers.hasOwnProperty(latlng)){ 标记[latlng]=真;

我意识到散列已经有了唯一的键,但我的问题是针对一个关于散列的特定用例(我觉得可能很常见)

我的网站上有一个谷歌地图(v3)。我从我的数据库中加载了一组位置,并在地图上的每个位置投掷标记。我在我的应用程序中遇到了一个问题,我看到每个位置都有重复的标记。我决定在addmarker函数的顶部添加一个检查,以使用先前放置的标记(按位置存储)的散列

markers={};
功能添加标记(latlng){
如果(!markers.hasOwnProperty(latlng)){
标记[latlng]=真;
}否则{
回来
}
//做其他事情
}
这很管用,但感觉很粗糙。将未使用的布尔值添加到每个哈希键/对中感觉不太正确,因为从技术上讲,它没有被使用。。。我只需要半把钥匙


有没有其他方法可以实现同样的想法?

这并不难。这是这种数据结构的一种相当标准的用法。为什么不以这种方式存储对标记的引用呢?看来这可能会派上用场<代码>如果(!markers[latlng])markers[latlng]=new google.maps.Marker(…)这是一个好主意@deceze-我刚刚实现了这个模式。作为旁注,如果(!markers[latlng])检查给定键的未定义值是否与通过执行hasOwnProperty检查键是否存在相同(结果)?如果不需要真实值,您可以使用数组和
indexOf====-1
代替对象和hasOwnProperty。但是存储一个实际的引用可能会更有用。ES6已经设置了
Set
,这对于您的案例可能更具吸引力。除此之外,它只存储唯一的值,并且支持
mySet.has(someVal)