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));
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];
}
}
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));