js数组转树形结构

var list=[
			{'name':'文件1-1-1-1-1','pid':1007 ,'id':1008},
			{'name':'文件1-1-1-1','pid':1005 ,'id':1007},
			{'name':'文件1-1-1','pid':4 ,'id':1005},
			{'name':'文件夹1','pid':0 ,'id':1},
			{'name':'文件夹2','pid':0 ,'id':2},
			{'name':'文件夹3','pid':0 ,'id':3},
			{'name':'文件夹1-1','pid':1 ,'id':4},
			{'name':'文件夹2-1','pid':2 ,'id':5},
			{'name':'文件1','pid':1 ,'id':1001},
			{'name':'文件2-1-1','pid':5 ,'id':1006},
			{'name':'文件2-1','pid':2 ,'id':1003},
			{'name':'文件2','pid':1 ,'id':1002},
			{'name':'文件2-2','pid':2 ,'id':1004},
	];



	function mapTree(_arr_,_pid='pid',_id='id'){
		let _arr=JSON.parse(JSON.stringify(_arr_)) 
		let treeList=[];
		let map={};

		_arr.forEach(item=>{  
			item.children=[]; //第一循环先给每个添加 children
			map[item[_id]] =item; //并把没一每一个添加到 map中
		})
		_arr.forEach(item=>{
			if(item[_pid]  === 0){
				treeList.push(item)
			}else{
				map[item[_pid]].children.push(item)
			}
		})


		return treeList
	}

console.log(mapTree(list)); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值