Javascript:
<script>
test = new Array();
test["1"] = "one";
test["2"] = "two";
test["3"] = "three";
test["4"] = "four";
test["5"] = "five";
test["6"] = "six";
for(var key in test) document.write(test[key]+';<br>');
</script>
Результат:
javascript |
one; two; three; four; five; six;
|
C#:
Hashtable tst = new Hashtable();
tst.Add("1", "one");
tst.Add("2", "two");
tst.Add("3", "three");
tst.Add("4", "four");
tst.Add("5", "five");
tst.Add("6", "six");
foreach (DictionaryEntry x in tst)
{
Context.Response.Write(x.Value.ToString() + ";<br>");
}
Результат:
c# |
four; five; six; one; two; three;
|
В случае с c# всё перемешано.
В идеале нужен отсортированный ассоциативный массив. Массив создаётся в отсортированном (order by) виде из sql-запроса. Получается массив массивов, где индекс внешнего массива - ссылка на родитель, индекс внутреннего - id самого элемента. При построении дерева, двумя циклами foreach пробегаюсь по ключам массивов от корня к ветвям, но так как foreach берёт данные с любого места, то и вывод получается неотсортированным.
Если только foreach убрать, использовать for и в отдельном списке/массиве хранить ключи?