zTree排序算法

编写个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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值