100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > python画父子关系图_将有父子关系的一维数组转换成树形结构(多维)数据

python画父子关系图_将有父子关系的一维数组转换成树形结构(多维)数据

时间:2024-06-07 22:43:31

相关推荐

python画父子关系图_将有父子关系的一维数组转换成树形结构(多维)数据

先来个函数注释 :

/**

* 将有父子关系的一维数组转换成树形结构(多维)数据

* console.log(JSON.stringify(setTreeData(data), null, 2));

* ============================================

* @param {*Array} data 需要遍历的一维数组

*/

再来具体的代码 :

function fnSetTreeData(data) {

var data = [...data];

var tree = data.filter((father) => {

var branchArr = data.filter((child) => {

if (father.id == child.parentId) child._hasParent = true;

return father.id == child.parentId;

// MARK 为什么这样写就报错 ?

// if (father.id == child.parentId) child._hasParent = true;

// return child._hasParent

});

if (branchArr.length > 0) father.children = branchArr;

return !father._hasParent;

});

// MARK 为什么在这里还得加一个过滤

tree = tree.filter((item) => {

return !item._hasParent;

})

return tree

}

console.log(JSON.stringify(fnSetTreeData(data), null, 2));

至于怎么解决 循环引用 的问题, 先用 sort 给数组排序后, 再在每次filter 中 计数++如何 ?

得给一个测试数据 :

var data = [

{ id: 40, parentId: 31, note: "的萨达是" },

{ id: 20, parentId: 11, note: "的萨达是" },

{ id: 22, parentId: 20, note: "dsadas" },

{ id: 12, parentId: null, note: "dsadasad萨达s" },

{ id: 11, parentId: undefined, note: "dqwds" },

{ id: 24, parentId: 22, note: "搜索" },

{ id: 34, parentId: 22, note: "搜索" }

];

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。