【发布时间】:2011-02-17 01:59:03
【问题描述】:
我有一个 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 (aka object) 也没有一个合适的数组。如果你想要一个对象,你应该用
{}而不是[]来初始化它。如果您使用[]进行初始化,则您有一个数组,但不要通过a["one"]和a["two"]而是通过a.push(...);添加到它。只有知道自己想要什么数据结构后,才可以费心去排序。 (顺便说一句:foo["bar"]与foo.bar相同,使用第二个,它不会用字符串文字和大量方括号阻塞代码)
标签: javascript sorting hashtable