我想知道是否有更好的方法来编写这个for循环而没有switch语句。请忽略for循环中的追加,这只是演示。
我想知道的是有没有办法连接变量名?例如,不是使用var name并使用switch语句为变量名赋值,有没有办法做类似的事情:
file + i // this will be the var file0, file1, file2.
var name = null,
content = null;
var file0 = {
name: null;
},
// file2, file3, file4.
file5 = {
name: null;
};
// Something's length is < 10.
for(var i = 0, len = something.length; i < len; i++){
switch(i){
case 0:
name = file0.name;
break;
case 1:
name = file1.name;
break;
case 2:
name = file2.name;
break;
case 3:
name = file3.name;
break;
case 4:
name = file4.name;
break;
case 5:
name = file5.name;
break;
default:
break;
}
// Better way to write name below?
$("#someContainer").append('<li class="file" id="file' + i + '">' + name + '</li');
}
答案 0 :(得分:2)
您可以按名称访问变量:
var file4 = 42;
this["file"+4]++;
alert(file4) // 43
不确定使用此或窗口访问全局变量是否更合适。
答案 1 :(得分:0)
我不明白为什么你要创建这样一堆只包含一个键值配对的对象。 为什么不使用数组作为文件名?
var arrFileNames = ["file0Name","file1Name","file2Name"...];
for(...) {
name = arrFileNames[i];
}
或者,为了缩短事物(因为实际上不需要名称变量):
$("#someContainer").append('<li class="file" id="file' + i + '">' + arrFileNames[i] + '</li');