谷歌地图-用javascript构建一个哈希表和完美的哈希函数

google maps - Building a hash table and perfect hash function in javascript

本文关键字:哈希表 一个 完美 函数 哈希 javascript 构建 谷歌地图      更新时间:2023-09-26

我正在使用Google Maps API,觉得除了大量的switch语句之外,还有更好的方法来搜索全景图像。我认为使用外部哈希表会更高效,也更容易维护。每个图像都有一个唯一的panoID,我可以定义它。通过阅读哈希表,我相信我说的是正确的,我可以制作一个表和完美的函数来在恒定时间内获得我需要的数据。有关于如何构建这个的好资源吗?我对哈希一点经验都没有。

我的逻辑是这样的:每个图像都保存在一个目录中作为sometext_panoID.jpg,其中sometext是一个字符串,panoID是我想要的任何东西。当初始化前面提到的switch语句中的数据时,所有的切换都是根据panoID完成的,其他元数据都在那里访问。例如:

switch(panoID) {
    case "test1":
      links.push({
        description : "TEST2",
        pano : "test2",
        heading : 70
      });
      break;
    case "test2":
      links.push({
        description : "TEST1",
        pano : "test1",
        heading : 125
      });
      links.push({
        description : "TEST3",
        pano : "test3",
        heading : 0
      });
      break;
      case "test3":
      links.push({
        description : "TEST2",
        pano : "test2",
        heading : 0
      });
      break;
  }

由于我将知道所有的panoID,并且在构建表后无需排序、添加或以其他方式更改任何内容,所以我觉得有一种方法可以生成完美的哈希,但我真的不知道从哪里开始。有什么建议吗?提前感谢

实际上,简单的普通对象及其属性在下面被实现为哈希表。因此,无需阅读哈希算法,您可以通过JS引擎完成这项工作:

var table = {
    "test1": [
      {
        description : "TEST2",
        pano : "test2",
        heading : 70
      }
    ],
    "test2": [
      {
        description : "TEST1",
        pano : "test1",
        heading : 125
      },
      {
        description : "TEST3",
        pano : "test3",
        heading : 0
      }
    ],
    "test3": [
      {
        description : "TEST2",
        pano : "test2",
        heading : 0
      }
    ]
};
var itemstobepushed = table[panoID];
[].push.apply(links, itemstobepushed);