需求
希望通过一个以节点id组成的数组来查询树结构,并且返回对应节点id对应的节点。
数据结构
let testArr = [
{
children: [
{
children: [],
is_default: 1,
level: 1,
org_id: 2,
org_title: '未分组',
parent_id: 1,
person_num: 0
},
{
children: [
{
is_default: 0,
level: 2,
org_id: 4,
org_title: '后端组',
parent_id: 3,
person_num: 0
},
{
children: [
{
children: [
{
children: [],
is_default: 0,
level: 4,
org_id: 54,
org_title: '测试',
parent_id: 10,
person_num: 0
}
],
is_default: 0,
level: 3,
org_id: 10,
org_title: '部门名称2333',
parent_id: 8,
person_num: 0
}
],
is_default: 0,
level: 2,
org_id: 8,
org_title: '运维组',
parent_id: 3,
person_num: 0
}
],
is_default: 0,
level: 1,
org_id: 3,
org_title: '技术部',
parent_id: 1,
person_num: 0
}
],
is_default: 1,
level: 0,
org_id: 1,
org_title: '测试根节点',
parent_id: 0,
person_num: 0
}
]
函数
/**
* @param {literal Object *} arr 待查询的id数组
* @param {literal Array *} data 树结构数据
* @param {literal Array *} dep 查询arr中的id后,返回的对应的树节点
*/
getDepart(arr, data, department = []) {
// 注意:typeof 检测数组和对象都返回‘object’
if (typeof data === 'object') {
for (let i = 0; arr[i] !== undefined; i++) {
for (let j = 0; data[j] !== undefined; j++) {
if (
Number(arr[i]) === Number(data[j].org_id) ||
Number(arr[i]) === Number(data[j].id)
) {
department .push(data[j])
}
}
}
for (let m = 0; data[m] !== undefined; m++) {
this.getDepart(arr, data[m].children, department )
}
}
return department
}
调用
console.log(333, this.getDepart([1, 2], testArr))
网友评论