2013-02-20 169 views
0

我正在使用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秒,就沒有必要進行排序,添加或否則一旦該表內置改變什麼,我覺得有一種方法,使一個完美的哈希但不知道從哪裏開始。有小費嗎?預先感謝一大堆

回答

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); 
+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