PDA

Просмотр полной версии : Сортировка Ассоциативного Массива


OracleN
29.05.2007, 18:12
Госпрода, есть вопрос следующего плана.

почему написав

var tmp_arr = [];
tmp_arr['USA'] = 3214;
tmp_arr['USSR'] = 'Hello';
tmp_arr['my'] = '231';

Вы не получите туже последовательность - USA, USSR...
когда вы делаете

for (var x in tmp_arr) {

}

iNils
29.05.2007, 18:56
Потому, что for in работает по принципу FILO (First In Last Out).

OracleN
29.05.2007, 19:09
Потому, что for in работает по принципу FILO (First In Last Out).

А есть ли тогда какой нить вариант?

iNils
29.05.2007, 19:20
function reverse2 (arrayIn:Array) {
var arrayOut:Array = new Array ();
for (var arg in arrayIn) {
arrayOut[arg] = arrayIn[arg];
}
return arrayOut;
}
var tmp_arr:Array = [];
tmp_arr['USA'] = 3214;
tmp_arr['USSR'] = 'Hello';
tmp_arr['my'] = '231';
tmp_arr['z'] = 3214;
tmp_arr = reverse2 (tmp_arr);
for (var x in tmp_arr) {
trace (x);
}
trace ("============")
tmp_arr = reverse2 (tmp_arr);
for (var x in tmp_arr) {
trace (x);
}

OracleN
29.05.2007, 19:38
function reverse2 (arrayIn:Array) {
var arrayOut:Array = new Array ();
for (var arg in arrayIn) {
arrayOut[arg] = arrayIn[arg];
}
return arrayOut;
}
var tmp_arr:Array = [];
tmp_arr['USA'] = 3214;
tmp_arr['USSR'] = 'Hello';
tmp_arr['my'] = '231';
tmp_arr['z'] = 3214;
tmp_arr = reverse2 (tmp_arr);
for (var x in tmp_arr) {
trace (x);
}
trace ("============")
tmp_arr = reverse2 (tmp_arr);
for (var x in tmp_arr) {
trace (x);
}

Гениально, хотя честно я так раньше делал, но не был уверен что это нормалный подход, и порядок не поменяется.

Спасибо.

И вообще, могу я быть уверен, что порядок не поломается или по старинке надо 1,2,3,..