Actionscript 3 在AS3中通过字符串访问数组元素

Actionscript 3 在AS3中通过字符串访问数组元素,actionscript-3,Actionscript 3,正如我们所知,使用索引器按名称访问字段是可能的 var obj:* = {name:"Object 1"}; trace(obj["name"]); // "Object 1" 但是如何通过字符串访问数组元素呢 var arr:Array = new Array(); var obj:* = {items:arr}; trace(obj["items[0]"]); // Undefined 好的,基本上您希望能够将字符串解释为actionscript。恐怕没有什么好办法。您可以编写一个解析器

正如我们所知,使用索引器按名称访问字段是可能的

var obj:* = {name:"Object 1"};
trace(obj["name"]); // "Object 1"
但是如何通过字符串访问数组元素呢

var arr:Array = new Array();
var obj:* = {items:arr};
trace(obj["items[0]"]); // Undefined

好的,基本上您希望能够将字符串解释为actionscript。恐怕没有什么好办法。您可以编写一个解析器来处理字符串中的一些简单语法并检索值

下面是一个简单的例子:

var obj:Object = {
    items:[1, 2, 3], 
    subObj: {
        subitems: [4, 5, 6]
    }
};

trace(getValueInObject(obj, "items[0]")); // 1
trace(getValueInObject(obj, "subObj.subitems[2]")); // 6

// takes an object and a "path", and returns the value stored at the specified path.
// Handles dot syntax and []
function getValueInObject(obj : Object, pathToValue : String) : * {
    pathToValue = pathToValue.replace(/\[/g, ".").replace(/]/g, "");
    var pathFractions : Array = pathToValue.split(".");
    var currentObject : Object = obj;

    while (pathFractions.length > 0 && currentObject != null) {
        var fraction : String = pathFractions.shift();
        currentObject = currentObject[fraction];
    }

    if (currentObject != null) {
        return currentObject;
    }

    return null;
}

我需要类似于“obj[“items”][0]”的内容。我知道如何访问阵列-1我已经用一个可能的解决方案更新了我的原始答案,我希望它有一些用处。这就是我所想的。泰!