[英]javascript multidimensional array to JSON
请检查我的小提琴,并告诉我我做错了什么? 我不要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/
小变化:
for (n in objects[i]) {
if(typeof objects[i][n] !='string') {
document.getElementById("out").innerHTML += '"option' + n + '" : {"ans" : ' + objects[i][n][0] + ', "cor:"' + objects[i][n][1] + '"},<br>';
}
};
如果您使用console.log(objects [i] [n]),则会发现问题字符串作为循环中的元素。 因此,您可以通过这种方式跳过它...(或其他方式,如答案中所建议)
演示: http : //jsfiddle.net/jvhgxawm/7/
但是,重新构造您的初始数组(如果可以)是更好的选择。
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"},
使用"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 += '}';
将不同的选项存储为数组更有意义。 因此:
["what is your name?", ["Alex", false],
["Hervy", false],
["Rico", true],
["Tom", false]
],
您应该这样做:
["what is your name?", [
["Alex", false],
["Hervy", false],
["Rico", true],
["Tom", false]
]],
然后在内部循环中,将objects[i]
替换为objects[i][1]
:
for (n in objects[i][1]) {
document.getElementById("out").innerHTML += '"option' + n + '" : {"ans" : ' + objects[i][1][n][0] + ', "cor:"' + objects[i][1][n][1] + '"},<br>';
};
希望能帮助到你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.