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

先来个函数注释 :

/**

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

* 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: "搜索" }

];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值