我可以用JS数组做到这一点吗?

时间:2011-04-01 13:36:54

标签: javascript arrays naming-conventions

我想创建一个名为currentArray的数组,但我希望它的内容由不同的数组组成。基本上是副本。但是,我想影响使用变量(int)将哪个数组复制到currentArray

这就是我的意思:

function region(number)
{
        var regionArray1 = [1093, 1276, 436, 541];
        var regionArray2 = [563, 747, 310, 423, 744, 947, 601, 715];

        var currentArray = (regionArray+number)[]; 
}

number将是1或2.如果可以的话,这样做的正确方法是什么?我也试过了var currentArray = ("regionArray"+number)[];,但这似乎也不是正确的方法。

5 个答案:

答案 0 :(得分:5)

“最佳”方式是使regionArray成为数组数组(或数组对象):

function region(number)
{
    var regionArray = {
                        "1": [1093, 1276, 436, 541], 
                        "2": [563, 747, 310, 423, 744, 947, 601, 715]
                      };

    var currentArray = regionArray[number]; 
}

答案 1 :(得分:2)

我会使用二维数组:

function region(number) {
    var regionArrays = [
        [1093, 1276, 436, 541],
        [563, 747, 310, 423, 744, 947, 601, 715]
    ];
    var currentArray = regionArrays[number - 1];

}

答案 2 :(得分:2)

function region(i) {
    var regionArray = [
        [1093, 1276, 436, 541],
        [563, 747, 310, 423, 744, 947, 601, 715]
    ];

    var currentArray = regionArray[i];
}

答案 3 :(得分:0)

您应该使用开关/外壳。如果您知道需要执行的所有信息,则不应使用eval

function region(n) {
    // define arrays ...
    switch(n) {
        case 1 : currentArray = regionArray1; break;
        case 2 : currentArray = regionArray3; break;
    }
}

如果扩展到2以上,您可以拥有一个数组数组,只需指定currentArray = arrayChoices[n];

即可

答案 4 :(得分:0)

为什么不这样:

function region(number)
{
        var regionArray = [];
        regionArray[0] = [1093, 1276, 436, 541];
        regionArray[1] = [563, 747, 310, 423, 744, 947, 601, 715];

        var currentArray = regionArray[ number ]; 
}