js递归处理数据,并且渲染页面(表格)

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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值