2013-02-06 107 views
0

我有兩個變量:的Javascript,添加字符串數組[字符串]

var cost = new Array(); 
var maxslot = new Array(); 

和我這樣設置值:

<script> 
cost = {"m2mp":"0.05"}; 
maxslot = {"m2mp":"1000"}; 
</script> 
<script> 
cost = {"samp":"0.04"}; 
maxslot = {"samp":"500"}; 
</script> 

samp取代m2mp,如果我叫alert(cost["m2mp"]),它輸出undefined(如果我不分配samp,我會得到正確的輸出)。我嘗試用+=替換=,但它沒有幫助(然後sampm2mp都是undefined)。

我找不到任何解決方案 「模擬」 這樣的:

cost["string"] = string; 
+0

爲什麼你甚至有單獨的腳本?在一個腳本中,你可以簡單地寫'cost = {m2mp:0.05,samp:0.04); maxslot = {m2mp:0.04,samp:500);'我只是假設值應該被視爲數字。 – MCL

回答

0

只是這樣做:

<script> 
    cost["m2mp"] = "0.05"; 
    maxslot["m2mp"] = "1000"; 
    cost["samp"] = "0.04"; 
    maxslot["samp"] = "500"; 
</script> 

但是,你希望你的變量的方法使他們Objects,不Arrays。所以你必須更換:

var cost = new Array(); 
var maxslot = new Array(); 

有了:

var cost = new Object(); 
var maxslot = new Object(); 

或者,你可以只聲明變量,並賦值給它在同一行,在「對象文本」:

var cost = {'m2mp':'0.05', 'samp': '0.04'} 
var maxslot = {'m2mp':'1000', 'samp': '500'} 
+0

@Cerberus,thanx man :) cost [「m2mp」] ...它的功能!感謝名單 – GAMELASTER

0

在你的第二個片段你要創建對象(大括號),而不是陣列。你是否試圖將鍵值對添加到你的變量中?

您應該簡單地設置的屬性,你需要:

var cost, maxslot; 
// ... 
cost = {"m2mp":"0.05"}; 
maxslot = {"m2mp":"1000"}; 

cost["samp"] = "0.04"; 
maxslot["samp"] = "500"; 

在JavaScript中,你使用大括號創建一個新的對象:

var obj = {}; 
obj.constructor; // function Object() { [native code] } 

旁註:[]表示法優於new Array()創建數組時。

var arr = []; 
arr.constructor; // function Array() { [native code] }