PDA

Просмотр полной версии : Просмотр ассоциативного массива в обратном порядке


Lego
09.08.2004, 15:02
Столкнулся с такой проблемой. Создаю массив

arr = new Array();
arr["arrname"] = "3";
arr["arrvalue"] = "6";
arr["arrcnt"] = "9";
for(var key in arr) {
trace(arr[key]);
}

Как результат, оно выводит

9
6
3

Подскажите, пожалуйста, каким образом мона изменить, чтобы выводилось в таком же порядке, в котором и создается:

3
6
9

Спасибо.

DeliMIter
09.08.2004, 15:14
Создай массив, запихни туда значения, реверсни.

opex
09.08.2004, 15:14
1
arr = new Array();
name = new Array("arrname", "arrvalue", "arrcnt");
arr["arrname"] = "3";
arr["arrvalue"] = "6";
arr["arrcnt"] = "9";
for (i=0; i<name.length; i++) {
trace(arr[name[i]]);
}
2
arr = new Array();
arr["arrcnt"] = "9";
arr["arrvalue"] = "6";
arr["arrname"] = "3";
for (var key in arr) {
trace(arr[key]);
}

Nox Noctis
09.08.2004, 15:16
если у тебя в качестве либо ключа либо значения в массиве идут целые числа - то гораздо удобнее использовать обыкновенный массив. один вызов Array.reverse решает проблему.

а for .. in всегда перебирает элементы в порядке обратном том в котором они были созданы. т.е. самый новый первым, потом тот который был создан пере ним и т п.

Nox Noctis
09.08.2004, 15:17
да и вообще. если важен порядок элементов - то for .. in использовать не особо грамотно...

зы: а первый вариант opex'а совсем неплох.
только это всё равно лишний наворот здесь.

Lego
09.08.2004, 15:25
Яфно. Значит никак нельзя.
Да думал я сделать подобно тому, как показал выше уважаемый Орех. Но как-то это подобно чесанию левого уха правой рукой через затылок.
Ладно. Прийдется чесать :D .

Всем большое спасибо.

opex
09.08.2004, 15:31
Оригинал написал(а) Lego
Но как-то это подобно чесанию левого уха правой рукой через затылок.

Кстати очень удобно =)