可能重複:
Is there any good JavaScript hash(code/table) implementation out there?JavaScript的結合陣列和字典
我想要的數據結構,我可以從爲O查詢鍵(1),而快速刪除的元素和從O(1)中隨機抽樣。
我想到一個與Array(用於採樣)結合的字典(用於關鍵查詢)。 但有沒有辦法連接(指針)之間的2?
例如:我想刪除一個條目,給定它的關鍵。所以我可以很容易地從字典中刪除它,但是我怎樣才能使用字典拼接出數組?
編輯:
var dict = {key1: "val1",key2:"val2"};
通過鍵獲取項目:
getKey = function(key){ return dict[key]; }
獲得通過索引的項目(這是我想改變)
getIndex = function(ind) { return dict.values()[ind] }
問題與getIndex函數是.values()遍歷所有字典並將其放入數組中。如果字典很大,非常昂貴。
更新: 我忘了這個問題,在我已經解決了它的同時,所以這裏的解決方案:
我們可以使用字典和數組: 陣列將持有的所有鍵字典 字典將保存鍵作爲其鍵,而不是值的元組索引是該元素在數組中的索引(一個指向排序數組的索引)的索引。
這樣,數組指向字典,字典指向數組。
現在,在DS中的動作如下:
插入(鍵,值):
推新的密鑰到陣列 創建一個元組 與主要插入元組到詞典'關鍵」
GET(鍵):
回報dictionary.get(鍵)
刪除(鍵):
從詞典中刪除elem 在數組中的最後一個鍵和我們的鍵之間切換(我們有指向我們鍵的指針) 將字典中的指針更新爲最後一個鍵,我們「VE切換 從陣列
randomSample(取樣器)刪除我們的鍵:
樣品與取樣器陣列(其可以是例如均勻採樣)。 迭代所有的樣品和從字典
類的全部源代碼返回相應的鍵的值可用:https://gist.github.com/shacharz/9807577
你可以發表一些你到目前爲止得到的代碼嗎?很難想象這裏有沒有樣品問這裏...... – elclanrs
這似乎是一個體面的研究生家庭作業問題,證明這個要求是不可能的。 :-)(也許不是,那麼這將是一個詭異的問題!)我也不認爲它特別是關於JavaScript。 – Pointy
請發佈樣本數據和樣本訪問權限。只是在尋找一個「有序字典」? – 2012-09-15 22:54:42