我有多个变量,例如“s11”和“s12”等。
var s11 = 0;
var s12 = 0;
除此之外,我还有一个包含所有这些变量名称的数组。
var wA = new Array("s11", "s12");
数组中的值稍后会根据用户活动自动添加到脚本中。
我的问题是,例如,每当变量“s11”作为数组中的一个值出现时,我都希望它变为 ++。这可以做到吗?
我有多个变量,例如“s11”和“s12”等。
var s11 = 0;
var s12 = 0;
除此之外,我还有一个包含所有这些变量名称的数组。
var wA = new Array("s11", "s12");
数组中的值稍后会根据用户活动自动添加到脚本中。
我的问题是,例如,每当变量“s11”作为数组中的一个值出现时,我都希望它变为 ++。这可以做到吗?
使用变量,会让你的生活变得艰难。这是一种两者兼而有之的方法。使用关联数组,如下所示:
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']
您可以使用该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]++;
}
如果你的s
变量是全局的,那么你可以点他以下:
for (var i = wA.length; i--;)
window[wA[i]] ++;
如果它们是全局变量,您可以window
使用括号表示法从对象中获取它们:
window[wA[0]]; // 0
否则,我建议使用对象而不是变量:
var myVars = {
s11 : 0,
s12 : 0
};
myVars[wA[0]]; // 0
唯一的另一种方法是使用eval
,如果您正在处理用户输入,这可能会很危险。
如果您的变量是全局变量,您可以执行如下所示的操作
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
取决于您的要求和实施