jsFiddle Demo
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(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 += '}';
side-issue, но вместо того, чтобы вручную выводить JSON, вы должны преобразовать массив в объект, который вы хотите, а затем просто 'JSON.stringify (obj)'. Гораздо меньше подвержено ошибкам. – Lee