Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 使用点分隔字符串获取对象嵌套属性_Actionscript 3_Apache Flex_Air - Fatal编程技术网

Actionscript 3 使用点分隔字符串获取对象嵌套属性

Actionscript 3 使用点分隔字符串获取对象嵌套属性,actionscript-3,apache-flex,air,Actionscript 3,Apache Flex,Air,Flex中是否有使用点分隔字符串获取对象嵌套属性的实用程序,如下所示: SomeUtil.getObjectProperty(object, "child.property"); 假设对象是动态对象,您可以自己滚动: public function getObjectProperty(object:Object, property:String):Object { var parts:Array = property.split("."); if(parts &&

Flex中是否有使用点分隔字符串获取对象嵌套属性的实用程序,如下所示:

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

假设对象是动态对象,您可以自己滚动:

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;
}
private函数测试(e:Event=null):无效
{
var obj:Object={
“儿童”:{
“财产”:1
},
“其他财产”:2
};
var test1:Object=getObjectProperty(obj,“另一个属性”);
var test2:Object=getObjectProperty(obj,“child.property”);
}
公共函数getObjectProperty(对象:对象,属性:字符串):对象
{
变量部分:Array=property.split(“.”);
var returnProp:Object=null;
对于(变量i:int=0;i
我知道。已经写了一篇。但我在想FlexSDK中是否存在类似的函数。你说得对。这很有效。但我建议在修改循环中的对象之前使用ObjectUtil.copy()创建对象副本,以保持对象实例。
object=returnProp
不会在函数之外修改对象。它只是更改了可以通过调试确认的引用。但是,如果在该函数内部执行类似于
object.anotherproperty=3
的操作,则会更改外部的对象。