Как гарантировать порядок для каждого цикла на объекте в Actionscript - PullRequest
0 голосов
/ 12 февраля 2011

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

function showObject(obj:Object) {
    for ( var key in obj ) {
        trace("key: " + obj[key]);
    }
}

Я понимаю, что это не гарантируется в каком-либо конкретном порядке;Какой лучший способ сделать это, но гарантировать отсортированный заказ?

Ответы [ 2 ]

3 голосов
/ 12 февраля 2011

Вы не можете.Это алгоритм хеширования, и он специально используется для перечисления динамических (например, хэшированных) свойств.Если вам нужно вернуть упорядоченный список, вы должны использовать Array или создать упорядоченный класс Hash, который вы можете последовательно просматривать.Просто поймите, что вы не сможете использовать цикл for ... in для этого.Вы должны построить итератор для обработки самой логики и просто вызвать .next (), чтобы он возвращал следующий элемент в последовательности.

2 голосов
/ 12 февраля 2011

Это у вас работает?

function showObject(obj:Object) {
    var keys:Array = new Array();
    var key;
    for ( key in obj ) {
        keys.push(key);
    }
    keys.sort();
    for ( key in obj ) {
        trace(key + ": " + obj[key]);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...