我有多个变量命名为例如“s11”和“s12”等。
var s11 = 0;
var s12 = 0;
除此之外,我还有一个包含这些变量的所有名称的数组。
var wA = new Array("s11", "s12");
稍后将根据用户活动在脚本中自动添加数组中的值。
我的问题是,我希望每次它作为数组中的值出现时,变量“s11”到++。可以这样做吗?
答案 0 :(得分:1)
使用变量会让你的生活变得艰难。这是两种方法。使用关联数组,如下所示:
var count = {};
var wA = new Array("s11", "s12");
function updateArray(value) {
wA.push(value);
if(! (value in count) ) {
count[value] = 0;
}
count[value]++;
}
然后使用它:
updateArray("s11");
updateArray("s12");
现在count
将如下所示:{s11: 1, s12: 1}
& wA
将如下所示:['s11', 's12']
答案 1 :(得分:0)
您可以使用eval()
功能。它运行任何作为参数给出的代码。例如,当每个变量的名称出现在数组中时,++
使用:
for(variablename in wA){ // or any other way to loop through the array
eval(variablename + "++");
}
此外,您可以像关联数组一样使用所有者对象。如果变量是全局变量,只需使用window
。
for(variablename in wA){ // or any other way to loop through the array
window[variablename]++;
}
答案 2 :(得分:0)
如果您的s
变量是全局变量,那么您可以点击他:
for (var i = wA.length; i--;)
window[wA[i]] ++;
答案 3 :(得分:0)
如果它们是全局变量,您可以使用括号表示法从window
对象中获取它们:
window[wA[0]]; // 0
Otherwsie,我建议使用对象而不是变量:
var myVars = {
s11 : 0,
s12 : 0
};
myVars[wA[0]]; // 0
唯一的另一种方法是使用eval
,如果您正在处理用户输入,这可能会很危险。
答案 4 :(得分:0)
如果您的变量是全局变量,则可以执行以下操作
s11 = 10;
s12 = 12;
var i = 11;
var wA = new Array(window["s" + i++], window["s" + i]);
否则,您必须在范围内声明变量,例如:使用this
this.s11 = 10;
this.s12 = 12;
var i = 11;
var wA = new Array(this["s" + i++], this["s" + i]);
或者您可以使用循环推送元素
var wA = [];
for(var i=11; i<=12; i++){
wA.push(this["s" + i]);
}
注意:i
的起始值和结束值取决于您的要求和实施