2009-12-26 40 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

相關問題