请检查我的 fiddle 并告诉我我做错了什么? 我不想要选项0。为什么它会来。
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/
最佳答案
Option0
在那里,因为它是数组的一部分。数组的 0 索引是 "what is your name?"
,在第一部分中,以及 "what is your brother's name?"
在第二个。
使用 for in 将迭代每个索引,并采用 0 索引最终将该字符串作为您可能的答案之一。当您假设答案的 [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 += '}';
关于javascript 多维数组转 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32662553/