我有一个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);
但它似乎不起作用。
编辑:我想到了,也许排好序的哈希表是一个自相矛盾的说法。如果是这样,那么获取这里的排序列表的最佳方法是什么?
{}
来初始化它,而不是用[]
。如果你用[]
初始化,那么你就有了一个数组,但是不要通过a["one"]
和a["two"]
的方式添加元素,而是使用a.push(...);
。只有在你知道你想要什么数据结构之后,才可以考虑排序。(顺便说一句:foo["bar"]
和foo.bar
是一样的,使用第二种方式,它不会用字符串字面量和大量方括号来混淆代码)。 - user1046334