1

次のようなドット区切りの文字列を使用して、オブジェクトのネストされたプロパティを取得するためのユーティリティが Flex にありますか。

SomeUtil.getObjectProperty(object, "child.property");
4

1 に答える 1

3

オブジェクトが動的オブジェクトであると仮定すると、独自のロールを作成できます。

public function getObjectProperty(object:Object, property:String):Object
{
    var parts:Array = property.split(".");
    if(parts && parts.length == 2 && object && object[parts[0]] && object[parts[0]][parts[1]])
    {
         return object[parts[0]][parts[1]];
    }
    return null;
} 

別の文字列で動作する別のものを次に示します。

private function test(e:Event = null):void 
{

    var obj:Object = { 
        "child": { 
            "property":1
         },
         "anotherproperty": 2
    };

    var test1:Object = getObjectProperty(obj, "anotherproperty");
    var test2:Object = getObjectProperty(obj, "child.property");
}

public function getObjectProperty(object:Object, property:String):Object
{
    var parts:Array = property.split(".");
    var returnProp:Object = null;

    for (var i:int = 0; i < parts.length; i++) 
    {
         if(object[parts[i]]) 
         {             
             returnProp = object[parts[i]];
             object = returnProp;
         } 
         else
             return null;
    }

    return returnProp;
}
于 2013-06-29T18:36:34.903 に答える