日期:2014-05-16  浏览次数:20343 次

不想循环里面套循环,帮我看看怎么分开来解决
假如一个object
rows":[{"id":"32","name":"nam3e1","age":1},{"id":"32","name":"ana2me1","age":2},{"id":"32","name":"b3name1","age":1},{"id":"32","name":"cna3me1","age":3}]}

然后在一个table里面

<table height="33" border="0" cellpadding="0" cellspacing="0">
      <tr class="rr0">
      <td class="row0">id</row>
      <td class="row1">name</row>
      <td class="row2">age</row>
      </tr>
      <tr class="rr1">
      <td class="row0">id</row>
      <td class="row1">name</row>
      <td class="row2">age</row>
      </tr>


一般的思维,是先FOR循环一下object,然后在循环一下每个组
这样的话,就会FOR 套 FOR

请问有没有办法拆分开来

------解决方案--------------------
这样可以不?

var obj = {"rows":[{"id":"32","name":"nam3e1","age":1},{"id":"32","name":"ana2me1","age":2},{"id":"32","name":"b3name1","age":1},{"id":"32","name":"cna3me1","age":3}]};
var html = '<table height="33" border="0" cellpadding="0" cellspacing="0">';
for(var i in obj.rows){
    html+='<tr class="rr'+i+'">\
                <td class="row0">'+obj.rows[i].id+'</row>\
                <td class="row1">'+obj.rows[i].name+'</row>\
                <td class="row2">'+obj.rows[i].age+'</row>\
           </tr>';
}
    html+='</table>';
    console.log(html)

------解决方案--------------------
<table>
<tr>
<td>id</td>
<td>name</td>
<td>age</td>
</tr>
<tbody id="tbodyContent"></tbody>
</table>

var json=$.parseJSON(object);
var data=json.rows;
$.each(data, function (i,n) {
     var tr="<tr><td>"+n.id+"</td>"
            +"<td>"+n.name+"</td>"
            +"<td>"+n.age+"</td>"
            +"</tr>";
     $("#tbodyContent").append(tr);
});
------解决方案--------------------

这个嵌套循环是难免的..除非就是他们写的..第二层循环.你省略了..手动写好3个td
在或者弄个each方法来遍历..但最终原理还是嵌套循环..看着好看点吧..
推荐使用数组的forEach方法来遍历吧.这个是JS 1.6定义的规范.有些浏览器已经实现了.没实现的用下面的方法代替

if ( !Array.prototype.forEach ) {
  Array.prototype.forEach = function(fn, scope) {
    for(var i = 0, len = this.l