2013-07-22 3 views
0

Это кажется глупым спросить об этом, но есть ли способ создать ассоциативный массив в actionscript прямо в объявлениях переменных?Конструктор ассоциативного массива Actioncript?

например.

private var stages:Array = [ 
    "name" : "NY Stage", 
    "location" : "New York", 
    "capacity" : 15000 
] 

Вместо этого, как я делаю это (1): объявление массива до вершины, а затем создать остальную часть массива в конструкторе класса:

private var stages:Array; 

public function PlayStage(){ 
    stages["name"] = "NY Stage"; 
    stages["location"] = "New York"; 
    stages["capacity"] = 15000; 
} 

Могу ли я сделать что-то как верх (без создания объекта)?

ответ

3

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

Вместо этого используйте Object. Вот ссылка на документацию о том, как создавать ассоциативные массивы:

Associative arrays in AS3

Для перебора ключей ассоциативного массива (это будет использоваться, чтобы получить длину, а), вы можете использовать это:

var oObj:Object = { "name" : "pear", "color" : "yellow" }; 

... 

for (var key:* in oObj) 
{ 
    // do something with the key or increment a counter, etc. 
} 
+0

ах, я вижу. Я также вижу, что у объекта нет таких методов, как массивы (срез, сращивание, длина), поэтому я надеялся использовать ассоциативные массивы (вместо того, чтобы превращать объекты в массивы, когда это необходимо или зацикливание). Каков самый простой способ получить длину свойств объекта? – Prodikl

+0

@Prodikl Я обновил свой ответ небольшим циклом 'for', который вы можете использовать для перебора ключей. Вы можете использовать этот метод для создания функции, которая возвращает длину ассоциативного массива, который вы проходите. – xxbbcc

+0

это потрясающе, спасибо! и доступ к значению будет только oObj [ключ], правильно? – Prodikl

1

Как xxbbcc сказал Ассоциативные массивы в основном объекты в AS3, поэтому строительство сокращенная объект будет работать:

private var stages:Object = { 
    "name" : "NY Stage", 
    "location" : "New York", 
    "capacity" : 15000 
} 
Смежные вопросы