【问题标题】:How do I use a variable to build an array name?如何使用变量来构建数组名称?
【发布时间】:2014-01-08 18:00:53
【问题描述】:

我有几组数组。每组都以相同的单词开头:

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

非常感谢!

【问题讨论】:

    标签: jquery arrays function


    【解决方案1】:

    如果你知道范围,你可以使用括号表示法,比如

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-16
      • 2012-11-10
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      相关资源
      最近更新 更多