如何通过更改变量名称来添加固定变量名称

How to add fixed variable name with changing variable name

本文关键字:变量名 添加 何通过 改变      更新时间:2023-09-26
<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>

看起来您正在尝试使用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

尝试:

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

EDIT: JaredPar是对的:你应该使用一个容器对象

W3Schools有一个很好的数组教程,你应该阅读。它真的会帮助你解决这个问题,因为它几乎完全符合你的例子。

本质上,当你在全局上下文中使用"var"时,你是在给window对象赋值。因此,您可以执行以下操作:

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;
}