Javascript:使用数组中的值来访问变量

时间:2013-06-30 16:48:39

标签: javascript arrays variables

我有多个变量命名为例如“s11”和“s12”等。

var s11 = 0;
var s12 = 0;

除此之外,我还有一个包含这些变量的所有名称的数组。

var wA = new Array("s11", "s12");

稍后将根据用户活动在脚本中自动添加数组中的值。

我的问题是,我希望每次它作为数组中的值出现时,变量“s11”到++。可以这样做吗?

5 个答案:

答案 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的起始值和结束值取决于您的要求和实施