Могу ли я сделать это с массивом JS? - PullRequest
0 голосов
/ 01 апреля 2011

Я хочу создать массив с именем currentArray, но я хочу, чтобы его содержимое было составлено из другого массива. В основном копия. Однако я хочу указать, какой массив копируется в currentArray с помощью переменной (int).

Вот что я имею в виду:

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 ]

5 голосов
/ 01 апреля 2011

«Лучший» способ - сделать regionArray массивом массивов (или объектом массивов):

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

    var currentArray = regionArray[number]; 
}
2 голосов
/ 01 апреля 2011
function region(i) {
    var regionArray = [
        [1093, 1276, 436, 541],
        [563, 747, 310, 423, 744, 947, 601, 715]
    ];

    var currentArray = regionArray[i];
}
2 голосов
/ 01 апреля 2011

Я бы использовал двумерный массив:

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

}
0 голосов
/ 01 апреля 2011

почему бы не это:

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 ]; 
}
0 голосов
/ 01 апреля 2011

Вы должны использовать переключатель / чехол.eval не следует использовать в тех случаях, когда вы знаете всю информацию, которая должна быть выполнена.

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

Если это значение превышает 2, вы можете иметь массив массивов и просто назначить currentArray = arrayChoices[n];

...