标题 树状结构根据末级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=======")
},