2013-02-06 105 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] }