var arr =[{"id":"2000","name":"BB公司","pid":""},
            {"id":"3000","name":"CC公司","pid":""},
            {"id":"1001","name":"财务部","pid":"1000"},
            {"id":"1002","name":"客服部","pid":"1000"},
            {"id":"1000","name":"AA公司","pid":""}];
        arr.sort(function(a,b){
            return a.id - b.id;
        });        var chd = {},o;
        for(var i = arr.length-1;i>=0; i--){
            o = arr[i];
            if(o.pid){
                if(!chd[o.pid]){
                    chd[o.pid] = [];
                }
                chd[o.pid].push(JSON.parse(JSON.stringify(o)));
                arr.splice(i,1);
            }            if(chd[o.id]){
                o.children = chd[o.id];
            }
        }
        alert(JSON.stringify(arr));

解决方案 »

  1.   

    ztree里面有一个transformTozTreeFormat: function( sNodes) {
    var i,l,
    key = "id",
    parentKey = "pId",
    childKey = "childNodes";
    if (!key || key=="" || !sNodes) return []; if ($.isArray(sNodes)) {
    var r = [];
    var tmpMap = [];
    for (i=0, l=sNodes.length; i<l; i++) {
    tmpMap[sNodes[i][key]] = sNodes[i];
    }
    for (i=0, l=sNodes.length; i<l; i++) {
    if (tmpMap[sNodes[i][parentKey]] && sNodes[i][key] != sNodes[i][parentKey]) {
    if (!tmpMap[sNodes[i][parentKey]][childKey])
    tmpMap[sNodes[i][parentKey]][childKey] = [];
    tmpMap[sNodes[i][parentKey]][childKey].push(sNodes[i]);
    } else {
    r.push(sNodes[i]);
    }
    }
    return r;
    }else {
    return [sNodes];
    }
    }
      

  2.   


    var arr =[{"id":"2000","name":"BB公司","pid":""},
                {"id":"3000","name":"CC公司","pid":""},
                {"id":"1001","name":"财务部","pid":"1000"},
                {"id":"1002","name":"客服部","pid":"1000"},
                {"id":"10011","name":"财务部1","pid":"1001"},
                {"id":"10012","name":"客服部1","pid":"1001"},
                {"id":"1000","name":"AA公司","pid":""}];
            arr.sort(function(a,b){
                return a.id - b.id;
            });        var chd = {},o;
            for(var i = arr.length-1;i>=0; i--){
                o = arr[i];
                if(chd[o.id]){
                    o.children = chd[o.id];
                }
                if(o.pid){
                    if(!chd[o.pid]){
                        chd[o.pid] = [];
                    }
                    chd[o.pid].push(JSON.parse(JSON.stringify(o)));
                    arr.splice(i,1);
                }
            }
            alert(JSON.stringify(arr));