迭代嵌套的Json数组

时间:2013-10-07 14:24:08

标签: arrays json

json和js的新内容,所以如果有人教我一点,我会恭喜。 Json数组:

var info = [
{"t":"09:00","b":"Vaba"},
{"t":"09:30","b":"Vaba"}  ] ;

和JS部分:

var output='';      
for (var i = 0; i <= info.length; i++) {
    for (info.t of info[i] ) {
        output += '<option> '  + info[i].t + ' ' + info[i].b + '</option>';  } };

    var update = document.getElementById('start_time');
    update.innerHTML = output;

我在HTML中得到的结果如下:

<option>9.00 Vaba</option>
<option>9.00 Vaba</option>
<option>9.30 Vaba</option>
<option>9.30 Vaba</option> 

这是我到目前为止找到的唯一可行的解​​决方案,但我不需要双重列表(时间和文本字符串两次)。编写任何函数而不是第二个for循环以错误信息[i] undefined ...

结束

非常感谢。

3 个答案:

答案 0 :(得分:1)

只需删除额外的for循环即可。还要注意引用info中的越界索引。当i = info.length时,info[i]超出范围。只要确保它永远不会那么远:

var output='';      
for (var i = 0; i < info.length; i++) {
    output += '<option> '  + info[i].t + ' ' + info[i].b + '</option>';  
}

var update = document.getElementById('start_time');
update.innerHTML = output;

答案 1 :(得分:0)

试试这个,它将花费更少的执行时间,并且还会处理内存。

var optionList=[];  
var len= info.length;   
for (var i = 0; i < len; i++) {
    optionList.push('<option> '  + info[i].t + ' ' + info[i].b + '</option>');  
}

var update = document.getElementById('start_time');
update.innerHTML = optionList.join('');

答案 2 :(得分:0)

谢谢大家的回复,最终解决方案是jquery each()