FLEX: Как вы получаете имена ключей массива? имена ключей массива? - PullRequest
0 голосов
/ 14 марта 2011

Я учил, как получить имена ключей гибкого массива, поскольку в классе Array такой функции нет.Вот мой ответ, который может быть полезен любому из вас.

Ответы [ 2 ]

2 голосов
/ 14 марта 2011

Попробуйте это:

        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.

1 голос
/ 14 марта 2011
    import mx.utils.ObjectUtil;

    var __arCurrent:Array=new Array();
    __arCurrent["x"]=10;
    __arCurrent["y"]=20;

    //Get class info of __arCurrent to get the keys name of the array
    var classInfoArray:Object=ObjectUtil.getClassInfo(__arCurrent);

    //For each key of the array __arCurrent
    for(var i:int=0;i<classInfoArray.properties.length;i++){
        var keyname:String = classInfoArray.properties[i].localName;
    }
...