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

问题描述:

我正在使用Google Maps API,并觉得有一种更好的方法可以搜索全景图像,然后搜索大量的switch声明。我会认为使用外部散列表会更有效率,更容易维护。每张图片都有一个独特的panoID,我可以定义。阅读哈希表,我相信我是正确的,说我可以创建一个表格和完美的功能,以获得我需要的数据在不断的时间。有没有关于如何建立这个好资源?我根本没有经历哈希。在javascript中构建哈希表和完美的哈希函数

我的逻辑是这样的:每个图像保存在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); 
+0

好吧。这当然很方便。我应该在OP中提到,我也是JS的新手,所以你可以在最后两行扩展一下吗?如果我理解正确,'var itemstobepushed = table [panoID];'将获得那个'panoid'的数据并放入'itemstobepushed'中,然后下一行会做什么? – zakparks31191 2013-02-20 18:54:37

+0

它使用['apply'方法函数](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/apply)来调用[Array'push'函数]( https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/push)与可变数量的参数。一个循环和'links.push(itemstobepushed [i])'可能会更方便... – Bergi 2013-02-20 18:59:58

+0

嗯好的,我将不得不进一步研究。 – zakparks31191 2013-02-20 19:15:09