扁平数组转tree,tree转id组成的二维数组

这篇文章描述了如何将扁平化的数组转换为树结构以及将树结构转换为由ID组成的二维数组。提供的JavaScript代码示例展示了在处理具有层级关系的数据时,如何通过pid和id属性构建和拆解数据结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

扁平数组转tree,tree转id组成的二维数组

case: [
					{ id: 1, level: 0, pid: 0 },
					{ id: 4, level: 1, pid: 1 },
					{ id: 5, level: 1, pid: 1 },
					{ id: 7, level: 2, pid: 5 },
					
					{ id: 2, level: 0, pid: 0 },
					{ id: 6, level: 1, pid: 2 },
					
					{ id: 3, level: 0, pid: 0 },
					{ id: 8, level: 1, pid: 3 },
					{ id: 9, level: 1, pid: 3 },
					{ id: 10, level: 2, pid: 9 },
				]


listToTree(list) {
			    var map = {}, node, tree= [], i;
			    for (i = 0; i < list.length; i ++) {
			        map[list[i].id] = list[i]; 
			        list[i].children = []; 
			    }
			    for (i = 0; i < list.length; i += 1) {
			        node = list[i];
			        if (node.pid !== 0) {
			            map[node.pid].children.push(node);
			        } else {
			            tree.push(node);
			        }
			    }
			    return tree;
			},
			treeToArray(list) {
			      const arr = []
			      let temp = []
			      const flatten = (list, arr) => {
			        list.forEach(item => {
			         if (item.children === null || item.children.length === 0) {
			           arr.push(temp.concat([item.id]))
			         } else {
			           temp.push(item.id)
			           flatten(item.children, arr)
			         }
			        })
			        temp = []
			        return arr
			      }
			      flatten(list, arr)
			      return arr
			    },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值