对于没有开关的循环

时间:2014-07-10 21:46:08

标签: javascript variables for-loop switch-statement

我想知道是否有更好的方法来编写这个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');
}

2 个答案:

答案 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');