javascript递归生成树

作者:用户 来源:互联网 浏览:457 次 时间:2016-08-22 09:19:35

javascript

javascript递归生成树 - 摘要: javascript递归生成树我现在有几个对象vara={id:3,child:1};varb={id:6,child:3};varc={id:3,child:2};vard={id:5,child:

问题描述

javascript递归生成树

我现在有几个对象

 var a = {
        id:3,
        child:1
 };
  var b = {
        id:6,
        child:3
 };
  var c = {
        id:3,
        child:2
 };
  var d = {
        id:5,
        child:4
 }
  var e = {
        id:6,
        child:5
 }

想通过这些关系构造一个树状关系,不一定是二叉树,对象数量不确定,但是有类似上面的关系
请问怎么实现

解决方案

JavaScript递归遍历树
JavaScript递归遍历树

解决方案二:

var dataArry = [{id: 3, child: 1}, {id: 6, child: 3}, {id: 3, child: 2}, {id: 5, child: 4}, {id: 6, child: 5}];
var len = dataArry.length;
var flagArr = [];//记录数组中已经是别人儿子的元素的小标,因为只可能是一个元素的儿子,所有不用担心重复,除非数据本身有问题
//双层遍历对比所有的元素,看看一个元素是否是别人的儿子
for (var i = 0; i < len; i++) {
for (var j = i; j < len; j++) {
if (dataArry[i].id == dataArry[j].child) {
if (!dataArry[j].childs) {
dataArry[j].childs = [];
}
dataArry[j].childs.push(dataArry[i]);
flagArr.push(i);
}
if (dataArry[j].id == dataArry[i].child) {
if (!dataArry[i].childs) {
dataArry[i].childs = [];
}
dataArry[i].childs.push(dataArry[j]);
flagArr.push(j);//记录下已经成为别人儿子的元素
}
}
};
function sortNumber(a, b) {
return a - b
}
//将数组排序
flagArr=flagArr.sort(sortNumber);
//将这些已经变成别人儿子的元素从数组中删除,剩下的便是树
for(var i=flagArr.length-1;i>=0;i--){
flagArr[i];
dataArry.splice(flagArr[i],1);
}
console.log(dataArry);

解决方案三:

效果就是这个样子javascript递归生成树-javascript 递归树

【云栖快讯】你想见的Java技术专家都在这了,向大佬提问,有问题必答  详情请点击
云栖社区(yq.aliyun.com)为您免费提供javascript递归生成树相关信息,包括 javascript 的信息 ,所有javascript递归生成树相关内容均不代表云栖社区的意见! 该页面h5页面的地址是:https://m.aliyun.com/yunqi/wenzhang/show_22975,您可以点击javascript递归生成树-手机站访问。
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

现在注册,免费体验40+云产品,及域名优惠!

云服务器9.9元/月,大学必备

热点导航