使用变量中的键名创建对象

时间:2009-12-26 11:04:21

标签: flex actionscript-3

我想创建一个具有从变量中获取的键名的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

3 个答案:

答案 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的语法是什么,但我确信它是可能的。