2020-12-31 树状结构根据末级id查到所有的父级id的方法

标题 树状结构根据末级id查到所有的父级id的方法

树状结构不知道有多少级的情况
树状的数据结构children是存放子集的地方,有子集就有children字段没有子集就没有children字段。
先上我的代码

//定义一个数组用来存放你知道的末级id和查到的父级id
//获取到子集id
this.questionBankValue = [];
this.typeid = this.questionData[0].type;

接下来

//sortOptions是整个树状结构
this.sortOptions.forEach((item,index)=>{
//循环第一层并且判断
                        if(item.children){
                            console.log("zhe   ");
                            //执行getId函数并将带有children的数组项以及你知道的末级id传过去
                            this.getId(item,this.typeid)
                        }else {
                        //没有子集的情况说明该数组项就是最后一级进行判断
                            if(item.id == this.typeid){
                            如果相等的话就传到数组里面
                                this.questionBankValue.unshift(item.id)
                            }
                        }
                    });

再看看getId()函数是怎么执行的

//这里的item一定有children
        getId(item,id){
            console.log(item,id,"adfasdfasdfasdf");
           //将传过来的item赋值
            let arr1 = item;
            let that = this;
            定义函数
            var forFn = function (arr,id) {
                // console.log(that,"this--------------")
                //判断有子集的item的id和末级id一样吗
                if(arr.id == id){
                    that.questionBankValue.unshift(arr.id);
                }else {
                //不是的话循环arr的children在做同样的判断
                    arr.children.forEach((sitem,sindex)=>{
                    //相同的话说明是末级id的父级,
                        if(sitem.id == id){
                            that.questionBankValue.unshift(sitem.id);
                            console.log(sitem.parentId,"parentId=======");
                            console.log(arr1,"arr1====================");
                            forFn(arr1,sitem.parentId);
                        }else {
                            if(sitem.children){
                                console.log(sitem.children,id,"kkkkkkkkkkkkkkkk");
                                forFn(sitem,id)
                            }
                        }
                    })
                }

            }
            //调用函数
            forFn(arr1,id);
            console.log(this.questionBankValue,"this.alltypelistvalue=======")
        },
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值