代码拉取完成,页面将自动刷新
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
list = [
{ 'id': '29', 'pid': '', 'name': '总裁办' },
{ 'id': '2c', 'pid': '', 'name': '财务部' },
{ 'id': '2d', 'pid': '2c', 'name': '财务核算部'},
{ 'id': 'd3', 'pid': 'd2', 'name': 'Java研发部'},
{ 'id': '2f', 'pid': '2c', 'name': '薪资管理部'},
{ 'id': 'd2', 'pid': '', 'name': '技术部'},
]
// function fn(arr){
// let obj = {}
// arr.forEach(item=>{
// item.children = []
// obj[item.id] = item
// })
// return arr.reduce((prev,item)=>{
// obj[item.pid]? obj[item.pid].children.push(item) : prev.push(item)
// return prev
// },[])
// }
// const aaa = fn(list)
// console.log(aaa);
// function fnn(arr){
// const treeList = []
// arr.forEach(item=>{
// item.children = []
// if(!item.pid) {
// treeList.push(item)
// }
// })
// }
// function fn(arr) {
// 定义一个对象,让id和数据建立映射关系
const obj = {}
list.forEach(item => {
// 给list中每条数据都先加上children属性为空数组
item.children = []
// 让对象的id与对象形成映射关系
obj[item.id] = item
})
const treeList = []
list.map(item => {
// 通过pid找上级,有上级就添加到上级对象的children中,没有就加到list中
if (obj[item.pid]) {
obj[item.pid].children.push(item)
} else {
treeList.push(item)
}
})
// }
// const p = fn(list)
console.log(treeList);
</script>
</body>
</html>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。