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

在javascript中构建哈希表和完善哈希函数,javascript,google-maps,hash,perfect-hash,Javascript,Google Maps,Hash,Perfect Hash,我正在使用Google Maps API,我觉得有一种更好的方法可以搜索全景图像,而不是使用大量的开关语句。我认为使用外部哈希表会更有效,也更容易维护。每个图像都有一个唯一的panoID,我可以定义它。通过阅读散列表,我相信我说的是正确的,我可以制作一个表和完善的函数,以在固定时间内获得所需的数据。有没有关于如何构建这个的好资源?我对哈希一点经验都没有 我的逻辑是这样的:每个图像都作为sometext\u panoID.jpg保存在一个目录中,其中sometext是一个字符串,panoID是我想

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

我的逻辑是这样的:每个图像都作为
sometext\u 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
s,并且在构建表后不需要排序、添加或以其他方式更改任何内容,因此我觉得有一种方法可以创建一个完美的哈希,但我真的不知道从何处开始。有什么建议吗?Thank’s a bunch in preadly

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

好。那当然很方便。我应该在OP中提到我对JS也是新手,所以你能把最后两行再扩展一下吗?如果我理解正确,
var itemstobepush=table[panoID]
将在该
panoid
处获取数据,并将其放入
itemstobepush
,下一行将具体执行什么操作?它使用调用,并使用可变数量的参数。一个循环和
链接.push(itemstobepush[i])
可能更方便…嗯,好的,我将进一步研究这个问题。