var arr = [];//定义数组 var max = 0;//数组深度,result,shuj function Supplementary_data(result){ $.each(result, function (k,v) { resolve(v,[]);//递归 }); console.log(arr); $.each(arr, function (k,v) { renderer(v,$('#update_data'),max);//渲染页面 }); } function resolve(json,arr_temp){ if(json.check_name){ if(arr_temp.length > max) max = arr_temp.length; arr.push(arr_temp); return false; } $.each(json, function (k,v) { var temp = arr_temp.concat(); temp.push(k); resolve(v,temp); }); } function renderer(arr,$ele,max){ console.log(max); var $tr = $("<tr></tr>"); var arr_length = arr.length; for(var i = 0;i< max;i++){ //跨列长度 if(i >= arr_length){ //超出当前数组长度 $tr.find("td:last").attr("colspan",max - i + 1); //跨列数为 总列数 - 已存在数列数 + 自身1 break; } var name = i; if ($ele.find("td[name='" + name + "']:last").text() == arr[i]) { if(!$ele.find("td[name='" + (name -1) + "']:last").length || $ele.find("td[name='" + (name -1) + "']:last").text() == arr[i-1]){ $ele.find("td[name='" + name + "']:last").attr("rowspan", parseInt($ele.find("td[name='" + name + "']:last").attr("rowspan")) + 1); }else{ $tr.append("<td name='" + name + "' rowspan='1'>" + arr[i] + "</td>"); } } else { $tr.append("<td name='" + name + "' rowspan='1'>" + arr[i] + "</td>"); } } if(max == 1){ $tr.find("td:last").attr("colspan",2); } $ele.append($tr); }