数据转换为树结构数据//---通过一个id回显下拉树数据
//数据转换为树结构数据 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; },