树形图【处理树形结构数据】

1. 树形图

树形图.html

<html>

<head>
    
</head>
<body>
	<script>
		var data = [
			 {"id":2,"name":"第一级1","pid":0},
			 {"id":3,"name":"第二级1","pid":2},
			 {"id":5,"name":"第三级1","pid":4},
			 {"id":100,"name":"第三级2","pid":3},
			 {"id":6,"name":"第三级2","pid":3},
			 {"id":601,"name":"第三级2","pid":6},
			 {"id":602,"name":"第三级2","pid":6},
			 {"id":603,"name":"第三级2","pid":6}
			];
			console.log(arrayToJson(data));
		 function arrayToJson(treeArray){
		  var r = [];
		  var tmpMap ={};
		 
		  for (var i=0, l=treeArray.length; i<l; i++) {
		   // 以每条数据的id作为obj的key值,数据作为value值存入到一个临时对象里面
		   tmpMap[treeArray[i]["id"]]= treeArray[i]; 
		  } 
		  console.log(tmpMap);

		  for (i=0, l=treeArray.length; i<l; i++) {
		   var key=tmpMap[treeArray[i]["pid"]]; 
		   //判断是否有id的值  与  pid的值 相同,key存在时,两者相同,此时对应的id有子元素。
			
		   //循环每一条数据的pid,假如这个临时对象有这个key值,就代表这个key对应的数据有children,需要Push进去
		   if (key) {
			if (!key["children"]){
			  key["children"] = [];  //第一次
			  key["children"].push(treeArray[i]);
			}else{
			 key["children"].push(treeArray[i]);
			}    
		   } else {
			//如果没有这个Key值,那就代表没有父级,直接放在最外层
			r.push(treeArray[i]);
		   }
		   //注意treeArray数组中每个元素/treeMap对象中每个值对key数组的拷贝,都是浅拷贝,指向同一个内存地址,一改俱改。
		  }
		  return r
		  }
	</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值