Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   добавление в Array и Dictionary значений с строковым ключем (http://www.flasher.ru/forum/showthread.php?t=147655)

voltaren 10.12.2010 03:57

добавление в Array и Dictionary значений с строковым ключем
 
Приветствую всех. У меня возник вопрос, я искал на форуме сразу, но единственное что нашел это тему со схожим вопросом, но там был ответ только на счет Object, что порядок добавления свойств не сохраняется.
Вот мой код:

Код AS3:

var vals:Array = new Array();
vals["hi"] = "some value 1";
vals["bye"] = "some value 2";
 
for (var key:String in vals)
        trace("key = " + key + " value = " + vals[key]);

результат исполнения вот такой:
key = bye value = some value 2
key = hi value = some value 1

вопрос в том почему поменялись местами элементы массива hi и bye? я заметил что такая же ситуация и с dictionary, а как быть когда важен порядок элементов, то есть надо что бы элементы были в порядке их добавления? какие есть решения, я что-то погуглил и ничего путного нету, или реализовывать такой вариант надо самому? Заранее благодарен.

zuxul 10.12.2010 10:43

http://help.adobe.com/ru_RU/AS3LCR/F...0.0/Array.html
От туда:
Цитата:

Не применяйте класс Array для создания массивов ассоциативных элементов (называемых также хэшами), которые представляют собой структуры данных, элементам которых присваиваются имена, а не числа. Чтобы создать массивы ассоциативных элементов, воспользуйтесь классом Object. Хотя ActionScript позволяет создавать массивы ассоциативных элементов с помощью класса Array, ни один из методов и свойств класса Array нельзя использовать с этими массивами.
По Вашему вопросу, я тоже был разочарован, что во флеше нет упорядоченных ассоциативных массиов, но, на самом деле, всегда можно сделать немного по-другому...
Допустим: в Array хранить порядок, в Object (или Dictionary), хранить значение по ключу.


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

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