2011-12-17 57 views
0

如何在JavaScript中實現Pythonic字典,能夠存儲鍵值對和鍵可以是元組?Javascript中的Pythonic字典

我想查找所有的錨點,然後將它的值hreftitle屬性存儲到字典中作爲鍵(href值,標題值)和此元組的出現次數作爲值。

的代碼應該是這樣的(這是Python和JavaScript的一個混合):

var anchors = document.querySelectorAll ("a"); 
d = []; // dictionary data structure 
for (var i = 0, len = anchors.length; i < len; i++) { 
    currentTuple = (anchors[i].href, anchors[i].title); 
    if (!d.containsKey(currentTuple)) { 
    d[currentTuple] = 1; 
    } else { 
    d[currentTuple] += 1; 
    } 
} 

也許會更容易些,如果按鍵不能元組,但如果可能的話,我想看看它。

謝謝

+1

這個圖書館,我發現這個目的非常有用:http://www.timdown.co.uk/jshashtable/。如果你實現一個自定義的'.equals'函數,它應該可以滿足你的需求。 – pimvdb 2011-12-17 13:01:12

回答

1

可以這樣工作嗎?它只是將標題和href作爲唯一鍵連接起來。

var data = [].reduce.call(document.links, function(data, a){ 
    var key = a.href+","+a.title; 
    if(data[key]) { 
     data[key]++; 
    } 
    else { 
     data[key] = 1; 
    } 

return data; 
}, {}); 

http://jsfiddle.net/knYwb/

+0

爲了確保唯一性,您可能需要在標題中使用不同的特殊字符或退出逗號 – hugomg 2011-12-17 13:16:46

+0

@missingno,這是什麼意思?逗號甚至不是必需的,只是爲了便於在控制檯中轉儲對象時的可讀性。 – Esailija 2011-12-17 13:20:19

+0

問題是,當你連接時,理論上可以有兩個獨立的元組來生成相同的密鑰。 – hugomg 2011-12-17 13:29:08