0

我怀疑我在基本的 JavaScript 语法中犯了一个错误。

var my_array = new Array(10);

for (var count=0; count<my_array.length; count++) {
var my_array+count = "This is a variable number "+count+".";
document.write(my_array+count);
}

我希望循环创建应称为my_array0、my_array1、my_array2等的一系列变量。上面的代码是我尝试这样做的方法,但它不起作用。在循环中命名变量的正确方法是什么?

编辑:我知道我可以使用 my_array[count],但这不是我想要的。我需要的是能够在循环中命名一个变量,使用索引作为变量名称的一部分。

4

8 回答 8

5

如果要设置数组的元素,请使用以下[]语法:

var my_array = new Array(10);

for (var count=0; count<my_array.length; count++) {
  my_array[count] = "This is a variable number "+count+".";
  document.write( my_array[count] );
}

此外,当仅指定数组的一个元素而不是数组本身时,请将其var放在前面!

于 2013-05-30T14:39:18.097 回答
2

这种模式是有问题的,数组似乎没有必要;但是,这是一种方法:

var my_array = new Array(10);

for (var count = 0; count < my_array.length; count++) {
  window['my_array' + count] = "This is a variable number " + count + ".";
  document.write(window['my_array' + count]);
}
于 2013-05-30T14:41:53.317 回答
2

在循环中命名变量的正确方法是什么?你没有。

如果您只想让一个变量保存该特定值,只需使用一个普通变量即可。如果您想要很多不同的值,请将其粘贴在数组或对象中。但这在这里是多余的,因为您已经有了一个数组,所以我真的不确定您要实现什么。

于 2013-05-30T14:39:44.893 回答
1

如果以前的答案都不适合您,您可以随时使用eval()

var varName = 'my_array'
for (var count=0; count<my_array.length; count++) {
  eval(varName+count +" = This is a variable number "+count+".");
}

编辑:@Noah Freitas 提供了更好的答案,而不使用eval().

于 2013-05-30T14:45:30.273 回答
0

你应该使用一个数组。

var myarray = new Array();
myarray[0] = "1";
myarray[1] = "2";
myarray[2] = "3";
于 2013-05-30T14:39:59.510 回答
0

您正在循环内重新定义 my_array ,并且也没有正确访问该变量。尝试:

var my_array = new Array(10);

for (var count=0; count<my_array.length; count++) {
    my_array[count] = "This is a variable number "+count+".";
    console.log(my_array[count]);
}

JS小提琴

于 2013-05-30T14:40:43.480 回答
0

您不能在赋值运算符 ( ) 的左侧执行=,只能assign在 javascript 中,执行发生在右侧。

var my_array = new Array(10);
var var_hashmap = {}; // create a new object to hold our variables.

for (var count = 0; count < my_array.length; count++) {
    var key = "my_array" + count;
    var value = "This is a variable number " + count + ".";
    var_hashmap[key] = value;
    document.write(var_hashmap[key]);
};
于 2013-05-30T14:43:15.790 回答
0
var my_array = new Array(10);

for (var count=0; count<my_array.length; count++)
{
    eval("var my_array" + count + " = 'This is a variable number'+count+' and the variable name is my_array'+count");

}

alert(my_array0);
alert(my_array1);
alert(my_array2);
alert(my_array3);
alert(my_array4);
alert(my_array5);
alert(my_array6);
alert(my_array7);
alert(my_array8);
alert(my_array9);

http://jsfiddle.net/pe97W/4/

于 2013-05-30T14:43:37.587 回答