2014-01-08 3 views
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'); 

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

ответ

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

Спасибо, adeneo! – LauraNMS

Смежные вопросы