Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Странности циклов (сортировка) (http://www.flasher.ru/forum/showthread.php?t=146615)

Byrger 13.11.2010 01:02

Странности циклов (сортировка)
 
Привет
Есть пример:
Код AS3:

                        var obj:Object = new Object();
 
                        obj[1] = 4;
                        obj[3] = 5;
                        obj[2] = 6;
 
                        for (var key2:String in obj) {
                                trace(obj[key2]);
                        }

Вывод с него такой
Код:

4 6 5
Тоесть по индексу, а мне нужно прокрутить цикл "как есть"
Тоесть чтоб на выводе было
Код:

4 5 6

-De- 13.11.2010 01:19

На самом деле, самого дела нет. Никак не есть. Порядок добавления не сохраняется.
"Object properties are not kept in any particular order, so properties may appear in a seemingly random order"

Byrger 13.11.2010 01:23

Хорошо, как тогда быть?
У меня 2х мерный объект(двухмерный массив)
И нужно отсортировать по значению которое внутри массива...

-De- 13.11.2010 01:39

Может, если массив, то делать массив (Array)? У него там есть sort() ивсётакое.
Двумерного массива тут не увидел, сортировка в двумерном массиве может быть не такой простой (особенно если чётко не сказать, чего надо).

in4core 13.11.2010 01:50

ээ может быть for each не ? Хотя не

Mitya_Potemkin 13.11.2010 01:59

вычисляй индекс элемента массива, который нужно выводить. К индексам привязывайся и всё будет ок)

chabapok 13.11.2010 04:37

если у вас значения добавляются в отсортированнам порядке - используйте стек, напрмиер. obj.push(4);obj.push(5);obj.push(6);
но индексы сползут.
если не хочется, чтобы индексы ползли, то можно использовать 2 массива - один с правильными индексами, а другой - стек.

Или можно использовать ваши 4,5,6 как ключи. как-то так:

Код AS3:

var obj:Object = new Object();
 
                        obj[4] = 1;
                        obj[5] = 3;
                        obj[6] = 2;
 
                        for (var key2:String in obj) {
                                trace(key2);
                        }

но все это, конечно, извращения.

КорДум 13.11.2010 10:11

Цитата:

Может, если массив, то делать массив (Array)? У него там есть sort() ивсётакое.
Единственная верная мысль. Зачем вам обджекты? Как сказал Тигер, а я разделяю его мнение, обджекты нужны в большинстве своем для передачи ключ-значение. И вообще, нафиг-нафиг эти массивы. Делайте на векторах.

PikseL 13.11.2010 15:46

А можно еще ArrayCollection() и будет аще щастье...


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

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