el tree生成唯一索引,通过索引值回溯到父级 - yuzhouxiaogegit/blog GitHub Wiki
el-tree生成唯一索引,通过索引值回溯到父级
el-tree 选择值必须是唯一索引
我们可以通过索子元素的索引还原父级的索引值,从而达到展开的效果
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
let treedata = [{"id":53,"group_id":1,"area_id":1,"pid":0,"name":"asd","number":"12","sort":0,"created_at":"2020-10-12 13:53","child":[{"id":54,"group_id":1,"area_id":1,"pid":53,"name":"aaaa1","number":"2323","sort":0,"created_at":"2020-10-12 14:01","child":[{"id":56,"group_id":1,"area_id":1,"pid":54,"name":"qqww","number":"2222","sort":0,"created_at":"2020-10-12 14:02"}]}]},{"id":62,"group_id":1,"area_id":1,"pid":0,"name":"总经办","number":"","sort":1,"created_at":"1970-01-01 08:00","child":[{"id":84,"group_id":1,"area_id":1,"pid":62,"name":"dsfd","number":"总经办","sort":0,"created_at":"2020-12-04 15:20"}]},{"id":63,"group_id":1,"area_id":1,"pid":0,"name":"市场部","number":"","sort":2,"created_at":"1970-01-01 08:00"}];
// 给 tree 生成唯一索引
function setTreeIndex(tempArr,key,flag){
for(let i in tempArr){
if(tempArr[i] instanceof Object){
if(tempArr[i] instanceof Object && !(tempArr[i] instanceof Array)){
tempArr[i].localLevelId = flag + '-' + tempArr[i][key];
}
tempArr[i] = setTreeIndex(tempArr[i],key,tempArr.localLevelId || '');
}
}
return tempArr;
}
setTreeIndex(treedata,'id','group')
console.log(treedata)
// 把树里面所有的索引找出来
function getTreeIndex(tempArr,key,reslut=[]){
for(let i in tempArr){
if(tempArr[i] instanceof Object){
getTreeIndex(tempArr[i],key,reslut);
}else{
if(i == 'localLevelId'){
reslut.push(tempArr[i]);
}
}
}
return reslut;
}
let tempTreeArr = getTreeIndex(treedata,'localLevelId');
console.log(tempTreeArr)
// 还原所有的父级值
function reductionIndex(tempArr,Str,reslut=[]){
for(let i in tempArr){
let tempRes = tempArr[i].split('-');
let tempStr = Str;
for(let j=1; j<tempRes.length; j++){
tempStr += ('-' + tempRes[j]);
if (reslut.indexOf(tempStr) == -1) {
reslut.push(tempStr);
}
}
}
return reslut;
}
let reductionV = ["group-53-54-56", "group-53-54-56-58","group-53-54", "group-53", "group-62-84","group-62-84-258", "group-62-84-25-19-8", , "group-62", "group-63"];
console.log(reductionIndex(reductionV,'group'))
</script>
</body>
</html>