我有两个变量:
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
,我会得到正确的输出)。我尝试将=
替换为+=
,但没有帮助(samp
和m2mp
都是undefined
。
我找不到“模拟”这个的任何解决方案:
cost["string"] = string;
答案 0 :(得分: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'}
答案 1 :(得分: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] }