2009-12-26 19 views
1

我想创建一个具有从变量中获取键名的对象。可能这还不够清楚,所以让我举个例子。我有两个变量var str1:String ='firstKey';和str2:String ='secondKey';使用变量中的键名创建对象

我怎样才能让一个对象,它看起来像:

VAR OBJ:对象= {firstKey:“一些价值”,secondKey:“其他一些价值”},注意firstKey和secondKey是变量的值str1和str2。

做的obj = {STR1:“一些价值”,STR2:“其他一些价值”}不会产生,我想

感谢名单一堆答案的结果! Ladislav Klinc

回答

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'; 
+0

嘿,这个解决方案的工作就像一个魅力,这正是我一直在寻找。感谢帮助! – Ladislav 2009-12-26 11:25:31

0

我认为你必须为此使用一个数组。所以你的对象有一个数组(把键串作为偏移量)。我不确定AS 3的语法是什么,但我确信这是可能的。

1

由于Lex建议,只需将split() a String分隔符转换为一个Array并使用它填充对象。

例如

//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

相关问题