Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Переменные в Object и странный порядок вывода (http://www.flasher.ru/forum/showthread.php?t=182299)

red_penguin 18.07.2012 19:35

Переменные в Object и странный порядок вывода
 
Есть не хитрый код:
Код AS3:

var object:Object = new Object();
object.param1 = "param_1";
object.param2 = "param_2";
object.param3 = "param_3";
 
for (var i in object)
{
        trace(i, object[i]);
}

Почему-то в печать выводится:
Код:

param2 param_2
param1 param_1
param3 param_3

а хотелось бы в том порядке, в котором добавли в объект :)
Можно ли этого добиться? Или смачно сплюнув уйти в надежный мир индексных масивов? :)

Bgg 18.07.2012 19:42

Вы запихали к себе в карман 3 абсолютно одинаковых по размеру яблока. Сначала зеленое, потом желтое, а потом красное. Вытащите их из кармана в таком же порядке.

-De- 18.07.2012 19:50

"object properties are not kept in any particular order, so properties may appear in a seemingly random order"
Читайте доки! for...in не поможет с порядком.

strangedk 18.07.2012 20:03

Код AS3:

var object:Object = new Object();
        object.param1 = "param_1";
        object.param2 = "param_2";
        object.param3 = "param_3";
 
for (var i:int=1; i<4; ++i) {
        trace(object["param"+i]);
}


Aquahawk 18.07.2012 20:09

Код AS3:

var object:Array = new Array();
                        object[0] = "param_1";
                        object[2] = "param_3";
                        object[1] = "param_2";
 
                        for each(var i:Object in object){
                                trace(i);
                        }

для аррая порядок соблюдается, для числовых ключей и то в порядке добавления. Никогда не видел чтобы документация на это указывала, по сему не рекомендую это использовать.

red_penguin 18.07.2012 20:14

Всем спасибо за исчерпывающий ответ :)
Переделаю через массив

Deimos747 18.07.2012 22:27

А лучше вообще так:
Код AS3:

var list: Vector.<String> = new <String> ["param_1", "param_2", "param_3"];
 for each(var i: String in list){
        trace(i);
}



Часовой пояс GMT +4, время: 20:07.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.