Как использовать переменную для построения имени массива?

0

У меня есть несколько наборов массивов. Каждый набор начинается с того же слова:

var firstarrayquestions = ["", "", ""];
var firstarrayanswer1 = ["", "", ""];
var firstarrayanswer2 = ["", "", ""];

var secondarrayquestions = ["", "", ""];
var secondarrayanswer1 = ["", "", ""];
var secondarrayanswer2 = ["", "", ""];

(...и т.д...)

Это может быть вопрос с очевидным решением, но если я хочу иметь одну функцию, которая обрабатывает вопросы и ответы от каждого массива, как мне это закодировать? Что-то вроде этого:

function handleQuestion(myStr) {
    var randomstart = 0; //just for example
    $('#question').text(myStr + arrayquestions[randomstart]);
    $('#q1').text(myStr + arrayanswer1[randomstart]);
    $('#q2').text(myStr + arrayanswer2[randomstart]);
}

handleQuestion('first');

Большое спасибо!

Теги:
arrays
function

1 ответ

2
Лучший ответ

Вы можете использовать нотацию в виде скобок, если знаете масштаб, что-то вроде

function handleQuestion(myStr) {
    var randomstart = 0; //just for example
    $('#question').text(window[myStr + 'arrayquestions'][randomstart]);
    $('#q1').text(window[myStr + 'arrayquestions'][randomstart]);
    $('#q2').text(window[myStr + 'arrayquestions'][randomstart]);
}

handleQuestion('first');

но почему бы не использовать объект

var questions = {
    first: {
         questions : ["", "", ""],
         answer1   : ["", "", ""],
         answer2   : ["", "", ""]
    },
    second: {
         ...etc
    }
}

таким образом вы можете получить к ним доступ, как:

function handleQuestion(myStr) {
    var randomstart = 0; //just for example
    var obj = questions[myStr];

    $('#question').text(obj.questions[randomstart]);
    $('#q1').text(obj.answer1[randomstart]);
    $('#q2').text(obj.answer2[randomstart]);
}

handleQuestion('first');
  • 0
    Спасибо, аденео!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню