如何在Javascript

时间:2018-02-18 05:49:21

标签: javascript arrays object

我制作了一个琐事游戏并且有一个充满问题和答案的对象。我想显示第一个问题和用户在屏幕上的选择。在他们猜测之后,程序显示第二个问题。

这是我到目前为止所做的:

var qAndA = {
  q1: {
    question: "What is the capital of nevada",
    choices:["Reno","Carson City","Las Vegas", "Boulder City"]
  },
  q2:{
    question: "What is the capital of Oregon?",
    choices:["Salem","Portland","Eugene","Bend"]
  },
  q3:{
    question: "What is the capital of Vermont?",
    choices:["Burlington","Bennington","Stowe","Montpelier"]
  },
};

function questionsAnswers(){
  timer();
  //This Is Where I want To Use A Loop Rather Than Writing Out ".q1.question"
  $("#main").append(qAndA.q1.question);
}

有没有办法在不必编写qAndA.q1.question的情况下定位数组中的特定对象,因此我不必为每个单独的问题写出(也许某种循环到这样做)

2 个答案:

答案 0 :(得分:1)

对象中的键也可以使用数组表示法引用,该表示法将键名称视为纯字符串:

var myObj = {
    key1: 'a',
    key2: 'b',
    key3: 'c'
}


console.log(myObj.key1) // 'a'
console.log(myObj["key1"]) // 'a'
console.log(myObj["key" + "1"]) // 'a'

答案 1 :(得分:0)

尝试将qAndA.q1.question重新编写为qAndA.["q"+i].question尽可能动态。 您可以将"q"+i分配给var并将其附加到上面的表达式。这个表达式应该循环:

var size = Object.keys(qAndA).length;

for (var i=1;i<=size ;i++){
  var c= "q"+i; //q1 when i=1 and so on
  // do ur routine stuff
  //qAndA["q"+i] === qAndA[c]
}