0

我有两个变量:

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;
4

2 回答 2

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'}
于 2013-02-06T12:55:09.650 回答
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] }
于 2013-02-06T13:05:58.030 回答