美文网首页
递归函数

递归函数

作者: wyc0859 | 来源:发表于2021-11-10 17:45 被阅读0次

    将分类递归,上下级排序

    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
                }
    

    相关文章

      网友评论

          本文标题:递归函数

          本文链接:https://www.haomeiwen.com/subject/nqrizltx.html