0

我正在使用 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;
  }

因为我会知道所有的panoIDs,并且一旦构建表就不需要排序、添加或以其他方式更改任何内容,我觉得有一种方法可以制作完美的哈希,但不知道从哪里开始。有小费吗?提前致谢

4

1 回答 1

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);
于 2013-02-20T18:51:33.667 回答