递归函数

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
            }
上一篇下一篇

猜你喜欢

热点阅读