Попробуйте это:
protected function getArrayKeys(a:Array):void
{
for (var key:String in a)
{
trace (key);
}
}
EDIT:
Я создал пример приложения для демонстрации ассоциативных массивов
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
creationComplete="application1_creationCompleteHandler(event)"
>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
var o1:Object = new Object();
var o2:Object = new Object();
//these access methods are equivalent:
//By property
o1.x = "Object1 xValue";
o1.y = "Object1 yValue";
//By indexer
o2["x"] = "Object2 xValue";
o2["y"] = "Object2 yValue";
//Access object properties by name
trace (o1.x);
trace (o1.y);
trace (o2.x);
trace (o2.y);
//dumpObject uses indexer to access key values
dumpObject(o1);
dumpObject(o2);
}
protected function dumpObject(o:Object):void
{
for (var key:String in o)
{
//loop through property names and access values by indexer.
trace ("Key = " + key + ". Value = " + o[key]);
}
}
]]>
</fx:Script>
</s:Application>
Также обратите внимание, что при использовании Object вы ограничены типом String. Вы можете иметь ассоциативный массив с типом ключа, отличным от String, используя класс Dictionary.