56 Star 1 Fork 1

CodeMonkeyLin/hrsaas52

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
递归.html 3.72 KB
一键复制 编辑 原始数据 按行查看 历史
CodeMonkeyLin 提交于 2022-11-27 18:56 . 人资第九天
<!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>
var arr = [1,2,3,[4,5,[7,8,[9,10]]]] // 假设不知道多维数组的层数,将多维数组通过递归转换成一维数组
// result = [] // 参数的初始值,有数组数据就用数组数据,没有则定义一个空数组
function flat(list, result = []){
list.forEach(item => {
if(Array.isArray(item)){
flat(item, result) // 判断儿子是不是数组,是数组的话递归遍历
} else{
result.push(item) // 不是数组就进行push
}
});
return result
}
// console.log( flat(arr));
const obj = {
id: 1,
name: "部门1",
pid: 0,
children: [
{
id: 2,
name: "部门2",
pid: 1,
children: [],
},
{
id: 6,
name: "部门6",
pid: 1,
children: [],
},
{
id: 3,
name: "部门3",
pid: 1,
children: [
{
id: 4,
name: "部门4",
pid: 3,
children: [
{
id: 5,
name: "部门5",
pid: 4,
children: [],
},
],
},
],
},
],
};
// let result = []
// function treeToList(tree, result = []){
// result.push(tree)
// tree.children.forEach((item => {
// // result.push(item)
// // item.children.forEach(a=>{
// // result.push(a)
// // })
// treeToList(item, result) // 递归解决无限循环过程,递归的代码逻辑是类似的
// }))
// return result
// }
const arr1 = [
{ id: 1, name: "部门1", pid: 0 }, // 根节点
{ id: 2, name: "部门2", pid: 1 },
{ id: 3, name: "部门3", pid: 1 },
{ id: 4, name: "部门4", pid: 3 },
{ id: 5, name: "部门5", pid: 4 },
];
// 列表转树形的函数
function listToTree(list, pid){
// rootValue // 传入需要匹配的pid
let result = []
list.forEach((item)=>{
if(item.pid === pid){
// item.children = listToTree(list, item.id)
// list.forEach(a => {
// if(a.pid === item.id){
// children.push(a)
// let child = []
// list.forEach(b=>{
// if(b.pid === a.id){
// child.push(b)
// }
// a.children = child
// })
// item.children = children
// }
// })
// 以item.id 作为pid的就是item的孩子
item.children = listToTree(list, item.id) // 找到 pid === item.id的children
// 找完儿子把自己push到结果
result.push(item)
}
})
return result
}
console.log(listToTree(arr1, 0));
</script>
</body>
</html>
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/github-29244000/hrsaas52.git
git@gitee.com:github-29244000/hrsaas52.git
github-29244000
hrsaas52
hrsaas52
gaodonglin

搜索帮助