叙述真是不知道怎么叙述,总之就是这样的数组:
mainArr = [
{
name: '地方',
id: '',
childMenus: [
{
name: '得分',
id: '',
childMenus: [
{
name: '菜单',
id: '',
articleDtoList: [
{...}
]
}
]
},
]
},
{
name: '地方',
id: '',
childMenus: [
{
name: '得分',
id: '',
childMenus: [
{
name: '菜单',
id: '',
articleDtoList: [
{...}
]
}
]
},
]
},
... ...
]
看看这结构,就很刺激,现在已知的底层id是info.menuId
,这个id有可能是上面这个mianArr
数组的第一层的某项id,也可能是第二层某项的,也可能是第三层某项的,现在的需求是:
1,假如这个id是数组第一层某项的,那第一层选中id所在当前项
2,假如这个id是数组第二层某项的,则获取第二层的数组,并且获取这项所在第一层的哪项
3,假如这个id是数组第三层某项的,则获取第三层的数组,并且获取这项所在第二层的哪项和所在的第一层的哪项
就是这么拗口,看图吧,直观一些,我用的是ElementUI
的el-select
展示的,就是逆推:
emmmmm,越说越绕了,看代码吧:
// mainArr已知数组
// editForm: {
mainVal: '', // 主菜单
sortVal: '', // 分类
subVal: '', // 次级菜单
},
// mainArr: [], // 主菜单列表
sortArr: [], // 分类列表
subArr: [], // 次级菜单列表
this.mainArr.forEach(item => {
if (item.id == info.menuId) {
this.editForm.mainVal = info.menuId
} else {
item.childMenus.forEach(item2 => {
if (item2.id == info.menuId) {
this.sortArr = item.childMenus
this.editForm.sortVal = info.menuId
this.editForm.mainVal = item.id
} else {
item2.childMenus.forEach((item3, index) => {
if (item3.id == info.menuId) {
this.subArr = item2.childMenus
this.editForm.subVal = info.menuId
this.sortArr = item.childMenus
this.editForm.sortVal = item2.id
this.editForm.mainVal = item.id
} else {
}
})
}
})
}
})
和后端协商的时候,说只返回一个id,让我自己往上遍历,找出所在的每层菜单,于是就这样。。