请检查一下我的小提琴,告诉我哪里做错了?我不想要option0为什么它会到来。
var qus ={
{
"qus" :"what is your name?",
"option0" : {"ans" : "w", "cor":"h"},
"option1" : {"ans" : "Alex", "cor":"false"},
"option2" : {"ans" : "Hervy", "cor":"false"},
"option3" : {"ans" : "Rico", "cor":"true"},
"option4" : {"ans" : "Tom", "cor":"false"},
},
}这是我的jsfiddle链接http://jsfiddle.net/rushdi1987/jvhgxawm/4/
发布于 2015-09-19 07:55:17
Option0在其中是因为它是数组的一部分。数组的0索引是第一个部分中的"what is your name?",第二部分中的"what is your brother's name?"。
使用for in将迭代每个索引,取0索引最终将该字符串作为可能的答案之一。因为你假设答案的一部分是名字,1是标志,所以[0]和[1]的结果是“你叫什么名字?”是w和h。此时数组的索引为0,因此您最终得到了您不想要的"option0" : {"ans" : w, "cor:"h"},。
修复方法很简单,只需使用条件if和continue跳过for in循环中索引
if(n == 0)continue;我稍微重构了您的代码,使其更易于阅读
var objects = [
[
"what is your name?",
["Alex", false],
["Hervy", false],
["Rico", true],
["Tom", false]
],
[
"what is your brother's name?",
["Alex", false],
["Hervy", true],
["Rico", false],
["Tom", false]
]
];
var el = document.getElementById("out");
el.innerHTML += 'var qus ={ <br>';
for (i in objects){
var qset = objects[i];
el.innerHTML += '{ <br>';
el.innerHTML += '"qus" :"' + qset[0] + '",<br>';
for (n in qset){
if(n == 0)continue;
var nameset = qset[n];
el.innerHTML += '"option' + n;
el.innerHTML += '" : {"ans" : ' + nameset[0];
el.innerHTML += ', "cor:"' + nameset[1] + '"},<br>';
}
el.innerHTML += '},<br><br>';
}
el.innerHTML += '}';https://stackoverflow.com/questions/32662553
复制相似问题