递归函数
2021-11-10 本文已影响0人
wyc0859
将分类递归,上下级排序
list: [{
id: 1,
name: "a",
pid: 0,
level: 0
}, {
id: 2,
name: "a1",
pid: 1,
level: 1
}, {
id: 3,
name: "a2",
pid: 1,
level: 1
}, {
id: 4,
name: "a1-1",
pid: 2,
level: 2
}, {
id: 5,
name: "b",
pid: 0,
level: 0
}, {
id: 6,
name: "a1-2",
pid: 2,
level: 2
}]
【PHP】
//通过父类ID获取所有的子类
function recursiveCategory($pid,$category){
$data = [];
foreach ($category as $item){
if($item['pid']==$pid){
$arr['id'] = $item['id'];
$arr['name'] = $item['name'];
echo $item['id']."-";
$cate = recursiveCategory($item['id'],$category);
if(!empty($cate)){
$arr[] =$cate;
}
$data[] = $arr;
unset($arr);
}
}
return $data;
};
$arr=recursiveCategory(0,$category);
echo json_encode($arr,JSON_UNESCAPED_UNICODE);
//通过子类获取所有的父类
function getCategoryByChild($childId,$category){
$data = [];
foreach ($category as $item){
if($item['id'] == $childId){
$arr['id'] =$item['id'];
$arr['name']= $item['name'];
if($item['pid']!=0){
$arr[] = getCategoryByChild($item['pid'],$category);
}
$data[]=$arr;
}
}
return $data;
}
$arr=getCategoryByChild(5,$category);
echo json_encode($arr,JSON_UNESCAPED_UNICODE);
【JS】
//const list=this.f_cats(this.list,1)
const list = this.c_cats(this.list, 4)
console.log("list", list)
//通过父类ID获取所有的子类
f_cats(cats, pid) {
let clist = []
cats.forEach(item => {
//console.log("传:"+pid,"pid:"+item.pid,"id:"+item.id);
if (item.pid == pid) {
//console.log("-----------");
const children = this.f_cats(cats, item.id)
if (children.length > 0) {
item.children = children
}
clist.push(item)
}
})
return clist
},
//通过子类获取所有的父类
c_cats(cats, cid) {
let clist = []
cats.forEach(item => {
console.log("传:" + cid, "pid:" + item.pid, "id:" + item.id);
if (item.id == cid) {
console.log("-----------");
if (item.pid != 0) {
const f_cats = this.c_cats(cats, item.pid);
item.father = f_cats
}
clist.push(item)
}
})
return clist
}