编写个html文件,代码如下:
<!DOCTYPE html>
<HTML>
<HEAD>
<TITLE> ZTREE DEMO </TITLE>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</HEAD>
<BODY>
<script type="text/javascript">
nodelist=
[
{ id:1, pId:0, name:"父节点1 "},
{ id:11, pId:1, name:"父节点11 "},
{ id:111, pId:11, name:"叶子节点111"},
{ id:112, pId:11, name:"叶子节点112"},
{ id:113, pId:11, name:"叶子节点113"},
{ id:114, pId:11, name:"叶子节点114"},
{ id:12, pId:1, name:"父节点12"},
{ id:121, pId:12, name:"叶子节点121"},
{ id:122, pId:12, name:"叶子节点122"},
{ id:123, pId:12, name:"叶子节点123"},
{ id:124, pId:12, name:"叶子节点124"},
{ id:13, pId:1, name:"父节点13 "},
{ id:2, pId:0, name:"父节点2"},
{ id:21, pId:2, name:"父节点21"},
{ id:211, pId:21, name:"叶子节点211"},
{ id:212, pId:21, name:"叶子节点212"},
{ id:213, pId:21, name:"叶子节点213"},
{ id:214, pId:21, name:"叶子节点214"},
{ id:22, pId:2, name:"父节点22 "},
{ id:221, pId:22, name:"叶子节点221"},
{ id:222, pId:22, name:"叶子节点222"},
{ id:223, pId:22, name:"叶子节点223"},
{ id:224, pId:22, name:"叶子节点224"},
{ id:23, pId:2, name:"父节点23"},
{ id:231, pId:23, name:"叶子节点231"},
{ id:232, pId:23, name:"叶子节点232"},
{ id:233, pId:23, name:"叶子节点233"},
{ id:234, pId:23, name:"叶子节点234"},
{ id:3, pId:0, name:"父节点3 "}
];
var key='id',parentKey='pId',childKey='children';
//具体方法
function reconstruction(sNodes){
var r = [];
var tmpMap = {};
//先把数组整理成map的形式
for (i = 0, l = sNodes.length; i < l; i++) {
// key为 对象的"id"的值, value就是就该对象
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;
}
console.log(reconstruction(nodelist))
</script>
</BODY>
</HTML>