如何将组合变量用于退出变量?

时间:2014-01-01 05:03:23

标签: javascript arrays

我有一个问题是将2个添加的变量转换为局部变量。 这是我的原始代码。

var mycars = new Array();
mycars[4]=(aa+","+bb+","+cc+","+dd+","+ee+","+ff+","+gg+","+hh);
mycars[5]=(ii+","+jj+","+kk+","+ll+","+mm+","+nn+","+oo+","+pp);

var car4 = mycars[4].toString();
var car5 = mycars[5].toString();

var new_data4 = car4.split(",");
var new_data5 = car5.split(",");

var final_data = "new_data";

for(var i = 4; i < 6 ; i++){
  var c = final_data + i;

  alert(c[i]);// the result is d,a(the local array n,e,w,_,d,a,t,a)
}

我希望这个结果是ee,nn

2 个答案:

答案 0 :(得分:1)

c不是数组;这是一个字符串。因此alert(c[i])分别会回复字符串new_data4new_data5的第五个和第六个字符。

如果您想使用c作为变量名,,如果这些变量是全局的,那么您可以访问window[c][i]之类的元素。但是这个对局部变量不起作用。没有按名称访问本地变量的标准方法。

在将所有变量全局化之前,您根本不需要按名称访问变量。如果它们在数组中,您可以通过数字访问它们。

注意这一点。

var new_data = [];
new_data[4] = [aa, bb, cc, dd, ee, ff, gg, hh];
new_data[5] = [ii, jj, kk, ll, mm, nn, oo, pp];

for(var i = 4; i < 6 ; i++){
  alert(new_data[i][i]);
}

顺便说一下,注意所有那些带有连接值的东西并将结果字符串化,然后再将它拆分......就消失了?没有必要 - 它基本上是繁忙的工作。您可以创建一个已填充值的数组,这样的数组应该是您的权威数据源。如果你需要一个字符串,那么从数组中构建它 - 而不是相反。

除了减少你编写的代码量之外,这还可以在名称中使用逗号而不会搞砸所有内容。 (目前,如果一个名称碰巧有一个逗号,你就会抛弃该名称及其后的所有内容。)

答案 1 :(得分:0)

    var c = final_data + i;

尝试制作

  var c =  window[final_data + i];