我想创建一个具有从变量中获取的键名的Object。可能这还不够明确,所以让我举一个例子。
我有两个变量var str1:String ='firstKey';和str2:String ='secondKey';
如何制作一个看起来像的对象:
var obj:Object = {firstKey:'some value',secondKey:'some other value'},请注意firstKey和secondKey是变量str1和str2的值。
执行obj = {str1:'some value',str2:'some other value'}不会产生我想要的结果
Thanx一堆的答案! Ladislav Klinc
答案 0 :(得分:5)
我不确定我是否理解正确,但这可能是你想要的:
var str1:String = 'firstKey';
var str2:String = 'secondKey';
var myObj:Object = {}; // shorthand for a new object
myObj[str1] = 'some value';
myObj[str2] = 'some other value';
括号内的字符串被展开,所以真的会发生这种情况:
myObj.firstKey = 'some value';
myObj.secondKey= 'some other value';
答案 1 :(得分:1)
正如Lex建议的那样,只需将split() a String分隔符放入数组中,然后使用它来填充对象。
e.g。
//get the values as arrays
var keys:Array = String('firstKey,secondKey').split(',');
var values:Array = String('some value,some other value').split(',');
var keysNum:int = keys.length;
//populate the object
var obj:Object = {};
for(var i:int = 0; i < keysNum; i++)
obj[keys[i]] = values[i];
//test
for(var k:String in obj)
trace('key: ' + k + ' value: ' + obj[k]);
HTH
答案 2 :(得分:0)
我认为你必须使用一个数组。所以你的对象有一个数组(键字符串为offset)。我不确定AS 3的语法是什么,但我确信它是可能的。