如何使用更改变量名称添加固定变量名称

时间:2011-11-08 15:43:06

标签: javascript jquery

<script>
    var data1_1 = $value;

    var data1_3 = $value;

    var data1_5 = $value;

</script>

上面的代码是硬代码,这是正确的。 现在我想使用for循环使代码更灵活。 但是,data1_keysArr[i] = $value上出现了问题。

任何人都可以帮助我吗?

提前致谢!

<script>

var keysArr = [1, 3, 5];

for(var i=0; i<keyArr.length; i++){

    data1_keysArr[i] = $value;


}

</script>

3 个答案:

答案 0 :(得分:2)

看起来您正在尝试使用for循环通过构造名称访问以前的硬编码值。如果是,请尝试以下

var keysArr = [1, 3, 5];
for (var i = 0; i < keyArr.length; i++) {
  var name = 'data1_' + keyArr[i];
  window[name] = $value;
}

我建议不要使用这种方法,因为您实际上是根据需要使用此代码定义了许多全局变量。相反,我会把它们放在一个容器对象上。例如

var parent = {};
var keysArr = [1, 3, 5];
for (var i = 0; i < keyArr.length; i++) {
  var name = 'data1_' + keyArr[i];
  parent[name] = $value;
}

console.log(parent.data1_1);  // Prints $value

答案 1 :(得分:0)

尝试:

window['data1_' + keysArr[i]] = $value;

编辑: JaredPar是对的:您应该使用容器对象。

答案 2 :(得分:0)

W3Schools有a great tutorial on arrays,您应该阅读。它将真正帮助你解决这个问题,因为它几乎完全匹配你的例子。

基本上,当您在全局上下文中使用“var”时,您将为窗口对象分配值。因此,您可以执行以下操作:

var keysArr = [1, 3, 5];
for(var i=0; i<keysArr.length; i++) {
   window['data1_'+keysArr[i]] = $value;
}

但是,为数值使用数组更为正确(请参阅教程以了解这一点):

var i, key, 
    keysArr = [1, 3, 5],
    data = [];

for(i=0; i < keysArr.length; i++) {
   key = keysArr[i];
   data[key] = $value;
}