我需要一个获取两个长度相同的数组参数的函数:property-names(Strings)和property-values。
该函数应该创建一个具有属性的对象,例如,在调用
之后var obj:Object = makeObject({"prop1","prop2"},{1,2});
测试条件(obj.prop1 == 1 && obj.prop2 == 2)
应该是真的。
如果你知道你的动作脚本,我会相信这应该是一个简单的 - 也许这只是一个语法问题。
迟到
在重新阅读我的问题之后,它似乎并不容易理解
我的问题是根据运行时值命名属性,即使用字符串参数来引用属性名称。
答案 0 :(得分:3)
我不确定您是否理解您的问题,但您可以使用Object literal创建Object:
var item:Object = {prop1: 1, prop2: 2};
trace (item.prop1 == 1 && item.prop2 == 2) // true
答案 1 :(得分:3)
Object
可以被视为带有键的字符串的地图(或关联数组) - 我相信这就是你想要做的。您可以在Adobe's documentation中阅读Flex中的关联数组。
private function makeObject( keys : Array, values : Array ) : Object
{
var obj : Object = new Object();
for( var i : int = 0; i < keys.length; ++i )
{
obj[ String(keys[i]) ] = values[i];
}
return obj;
}
这将创建一个新的Object
,其键值等于第一个数组中的值,值等于第二个数组中的项。