我有一個JavaScript哈希表,就像這樣:如何在Javascript中對散列表進行排序?
var things = [ ];
things["hello"] = {"name" : "zzz I fell asleep", "number" : 7};
things["one"] = {"name" : "something", "number" : 18};
things["two"] = {"name" : "another thing", "number" : -2};
我希望將這些整理成按名稱順序,所以如果我通過哈希表遍歷它將以
another thing
something
zzz I fell asleep
我去試過這樣做:
function compareThings(thing1, thing2) {
var name1 = thing1["name"].toLowerCase();
var name2 = thing2["name"].toLowerCase();
if (name1 < name2) {
return -1;
}
if (name1 > name2) {
return 1;
}
return 0;
}
things.sort(compareThings);
但它似乎並沒有工作。
編輯:它發生在我身上,或許一個排序的哈希表是一個矛盾。如果是這樣,訪問此處排序列表的最佳方式是什麼?
你是不是有hastable(又名對象),也沒有合適的陣列。如果你有一個對象,你應該使用'{}'來初始化它,而不是'[]'。如果你使用'[]'初始化你有一個數組,但是不要通過'a [「one」]'和'a [「two」]'來添加它,但是通過'a.push(...) );'。只有在你知道你想要什麼樣的數據結構之後,你才能夠排序。 (順便說一下:'foo [「bar」]'和'foo.bar'相同,使用第二個,它不會阻塞代碼,並且不會出現字符串文字和大量方括號) – 2011-11-17 12:44:09