第一种:
// 查询部门信息
seeBranch(data,id){
function find(data, fn, result) {
data.forEach(item => {
if(item.id===id){
result.push(item)
}else if (item.children.length>0) {
find(item.children, fn, result)
} else {
if (fn(item)) {
result.push(item)
}
}
})
}
const result = []
find(data, item => {
return item.id === id //查找的字段
}, result)
// console.log(result)
return result.length>0?result[0].name:''
},
第二种:
// 数组常量
const list = [
{
"value": 192,
"label": "技术部",
"children": [
{
"value": 193,
"label": "软件组",
"children": [
{
"value": 195,
"label": "软件一组"
},
{
"value": 196,
"label": "软件二组"
}
]
},
{
"value": 198,
"label": "运维组"
}
]
},
{
"value": 200,
"label": "财务部",
"children": [
{
"value": 201,
"label": "会计"
},
{
"value": 203,
"label": "出纳"
}
]
},
{
"value": 300,
"label": "人资部",
"children": [
{
"value": 301,
"label": "行政"
},
{
"value": 302,
"label": "人资"
}
]
}
]
// 计算方法
function recursionGet(setValues, valueId) {
let value = null;
for (let index = 0; index < setValues.length; index += 1) {
if (setValues[index].value === valueId) {
value = setValues[index].label;
break;
}
if (setValues[index].children instanceof Array && setValues[index].children.length > 0) {
const text = recursionGet(setValues[index].children, valueId);
if (text)
return text;
}
}
return value;
}
// 输出打印
const data =recursionGet(list,301)
console.log(data) // 输出 行政
第三种:
// 定义变量
let arr = [
{id:1213,arr:[
{id:1212,arr:[
{id:2343,arr:[
{id:3434,arr:[1,2,3]}
]}
]}
]}
]
// 父级结构数组
let val = [1213,1212,2343,3434];
// 递归函数
!function task(){
let ary = 0;
for(let i of arr){
if(i.id===val[ary]){
arr = i.arr;
ary++;
if(i.arr.length===3){
console.log('找到了',arr);
break;
}else{
task();
}
}else{
console.log('没找到');
break;
}
}
}();