当一个用户有两个角色时,后段会根据两个角色取两次权限,但是他特么不去重,导致前端会显示两个菜单,然后就开始逼逼赖赖。前端做简单的去重,只有两层的,不适用多层去重
[
{
title: '',
id: '1',
children: []
}
]
思路就是新建一个Object对象,把第一层相同的id作为key,把children作为value,遇到相同的合并,最后再重构回原来的数据格式
let tmp = {}
for(let i = 0; i < arr.length; i++){
if(tmp[arr[i].id] && tmp[arr[i].id].length > 0){
tmp[arr[i].id] = tmp[arr[i].id].concat(arr[i].children)
}
else{
tmp[arr[i].id] = arr[i].children
}
}
let result = []
Object.keys(tmp).map(item => {
let t = arr.filter(d => d.id == item)[0]
t.children = tmp[item]
result.push(t)
})
this.menuList = result