【问题标题】:Iterating over nested Json array迭代嵌套的 Json 数组
【发布时间】:2013-10-08 23:23:25
【问题描述】:

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 循环都会以错误 info[i] undefined...

结尾

先谢谢了。

【问题讨论】:

  • 你想知道什么?您可以发布为您引发错误的代码吗?

标签: arrays json


【解决方案1】:

只需删除多余的 for 循环即可。还要小心在info 中引用越界索引。当i = info.lengthinfo[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;

【讨论】:

    【解决方案2】:

    试试这个,它会花费更少的执行时间,而且还会照顾内存。

    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('');
    

    【讨论】:

    • 避免字符串连接(它需要更多内存),在for循环中我们不需要为每次迭代计算信息对象(数组)的长度,因此执行时间会更短。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      相关资源
      最近更新 更多