const originData = [
{ pid: 0, id: 1, name: '中国' },
{ pid: 1, id: 2, name: '北京' },
{ pid: 2, id: 20, name: '朝阳' },
{ pid: 20, id: 200, name: '朝阳1号' },
{ pid: 2, id: 21, name: '海淀' },
{ pid: 21, id: 201, name: '海淀1号' },
{ pid: 1, id: 3, name: '上海' },
{ pid: 3, id: 22, name: '浦东' },
{ pid: 22, id: 211, name: '浦东1号' },
{ pid: 3, id: 23, name: '虹口' },
{ pid: 23, id: 221, name: '虹口1号' },
{ pid: 1, id: 4, name: '浙江' },
{ pid: 4, id: 33, name: '杭州' },
]
//一维数组转树
function handleTreeData(list, id = 0, resultArr = [], childer = []) {
list.forEach(item => {
if (item.pid === id) {//如果他有pid表示他不是第一层子集 push搭配数组里面
resultArr.push(item)
childer = handleTreeData(list, item.id)
if (childer.length > 0) {
console.log(childer);
item.childer = childer
}
}
});
return resultArr
}
//树平铺
const tree = handleTreeData(arr)
console.log(tree);
function handleTileData(list,tileList=[]) {
list.forEach(item=>{
tileList.push({pid:item.pid,id:item.id,name:item.name})
if(item.childer instanceof Array){
handleTileData(item.childer,tileList)
}
})
return tileList
}
JavaScript树-平铺互相转换
最新推荐文章于 2024-06-18 09:42:51 发布