在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);
好吧。这当然很方便。我应该在OP中提到,我也是JS的新手,所以你可以在最后两行扩展一下吗?如果我理解正确,'var itemstobepushed = table [panoID];'将获得那个'panoid'的数据并放入'itemstobepushed'中,然后下一行会做什么? – zakparks31191 2013-02-20 18:54:37
它使用['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
嗯好的,我将不得不进一步研究。 – zakparks31191 2013-02-20 19:15:09