在javascript中构建哈希表和完美的哈希函数

时间:2013-02-20 18:45:37

标签: javascript google-maps hash perfect-hash

我正在使用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,并且在构建表后不需要排序,添加或以其他方式更改任何内容,我觉得有一种方法可以创建一个完美的哈希但是不要真的知道从哪里开始。有小费吗?感谢提前一堆

1 个答案:

答案 0 :(得分:1)

实际上,具有属性的简单普通对象实现为下面的哈希表。因此,无需阅读有关散列算法的内容,您可以通过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);