我制作了一个琐事游戏并且有一个充满问题和答案的对象。我想显示第一个问题和用户在屏幕上的选择。在他们猜测之后,程序显示第二个问题。
这是我到目前为止所做的:
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
的情况下定位数组中的特定对象,因此我不必为每个单独的问题写出(也许某种循环到这样做)?
答案 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]
}