У меня есть хеш-таблица 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);
Но это, кажется, не работает.
Править: мне приходит в голову, что, возможно, отсортированная хеш-таблица является оксюмороном. Если так, что лучший способ состоит в том, чтобы получить доступ к отсортированному списку вещей здесь?
Если вы хотите перебирать хеш-таблицу в JavaScript по порядку создайте массив, заполните его хеш-ключами, а затем отсортируйте его.
<html>
<body>
<pre>
<script>
var things = new Object ();
things["hello"] = {"name" : "zzz I fell asleep", "number" : 7};
things["one"] = {"name" : "something", "number" : 18};
things["two"] = {"name" : "another thing", "number" : -2};
var keys = [];
for (var key in things) {
if (things.hasOwnProperty(key)) {
keys.push(key);
}
}
keys.sort ();
for (i in keys) {
var key = keys[i];
var value = things[key];
document.write (key +"="+value+"\n");
}
</script>
</pre>
</body>
</html>
ваши параметры: thing1
и thing2
, но вы ссылаетесь на некоторые переменные с именем asp1
и asp2
, которые, насколько я могу судить из предоставленного вами источника, не существуют.
Кроме того, я думаю, что вы ищете ассоциативный массив, который не создается с синтаксисом []
. См. Здесь для получения дополнительной информации:
http://www.quirksmode.org/js/associative.html
РЕДАКТИРОВАТЬ: Я не думаю, что в Javascript есть массив, который позволит вам делать то, что вы хотеть.
У вас может быть простой старый массив, который позволит вам выполнять настраиваемую сортировку или , вы можете иметь ассоциативный массив, который позволит вам иметь именованные значения.
С обычным массивом вы, очевидно, можете перебирать индексы.
В ассоциативном массиве вы можете перебирать имена, выполнив for (var key in myArray)