//数据转换为树结构数据
TreeStructure(data) {
let result = [];
if (!Array.isArray(data)) {
return result;
}
data.forEach(item => {
delete item.children;
});
let map = {};
data.forEach(item => {
map[item.id] = item;
});
data.forEach(item => {
let parent = map[item.parentId];
if (parent) {
(parent.children || (parent.children = [])).push(item);
} else {
result.push(item);
}
});
return {
result
};
},
// 通过一个id回显下拉树数据
findFullId(childrenArr, val) {
let out = false; //定义一个标识(是否找到对应的id)
let bg = 0; //定义一个标杆(标识循环到当前数组的第几条)
for (let item of childrenArr) {
if (item.id === val) {
//判断所在数组(层级),是否有与之匹配的id
arr.push(item.id); //存在则返回其id
out = true; //存在就将标识设置为true
return; //递归出口(出口1)
} else if (
//判断id不匹配的层级是否具有下级目录(children)
item.children &&
item.children.length > 0
) {
arr.push(item.id);
findFullId(item.children); //存在下级目录就将下一级目录回调
}
bg++;
if (out) return; //如果找到对应的id 就执行返回 (出口2)
if (bg === childrenArr.length && arr && arr.length > 0) {
arr = []; //如果在最后一个数组对象都没有找到对应ID 那么就清空数组
}
}
return arr;
},