У меня есть хэш-таблицу 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
I пробовал сделать это:
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 (он же объект), ни правильного массива. Если вы хотите иметь объект, вы должны инициализировать его с помощью '{}' not with '[]'. Если вы инициализируетесь с помощью '[]', у вас есть массив, но затем не добавляйте его с помощью 'a [" one "]' и 'a [" two "]', а 'a.push (...); '. Только после того, как вы знаете, какую структуру данных вы хотите, можете ли вы разбираться в сортировке. (BTW: 'foo [" bar "]' такой же, как 'foo.bar', использовать второй, он не забивает код строковыми литералами и множеством квадратных скобок) – 2011-11-17 12:44:09