[TOC]
>[success] # 查找所有父级数据
~~~
let obj = [ // 树形数据结构
{
code: "PERM_10000",
name: "基础数据",
subList: [
{
code: "PERM_10004",
parentCode: "PERM_10000",
name: "桥梁数据",
subList: [
{
code: "PERM_10021",
parentCode: "PERM_10004",
name: "部件管理",
subList: [
{
code: "PERM_10022",
parentCode: "PERM_10021",
name: "查看列表"
}]
}
]
}]
}
]
/**
* 根据id或者code查找所有父级数据
* @param {Array} data2 - 数据源
* @param {Array} parentCode2 - 要过滤的parentCode或parentId
*/
function getParent(data2, parentCode2) {
let arrRes = [];
if (data2.length == 0) { // 无数据
return arrRes;
}
let rev = (data, parentCode) => { // 有数据
for (let i = 0, length = data.length; i < length; i++) {
let node = data[i];
if (node.code == parentCode) { // 要对比的id或code,parentId或parentCode
arrRes.unshift(node)
rev(data2, node.parentCode); // 要对比的id或code,parentId或parentCode
break;
}
else {
if (!!node.subList) { // child
rev(node.subList, parentCode); // 要对比的id或code,parentId或parentCode
}
}
}
return arrRes;
};
arrRes = rev(data2, parentCode2)
return arrRes;
}
let filterData = getParent(obj, 'PERM_10021') // 根据子级别id找所有父级(祖宗)
console.log(JSON.stringify(filterData))
// 返回数据格式
// [
// { code: 'PERM_10000', name: '基础数据', subList: [ [Object] ] },
// { code: 'PERM_10004', parentCode: 'PERM_10000', name: '桥梁数据', subList: [ [Object] ] },
// { code: 'PERM_10021', parentCode: 'PERM_10004', name: '部件管理', subList: [ [Object] ] }
// ]
~~~
- vue复选框逻辑
- get请求给后台传数组
- 提交表单时传值参数处理方案
- Element ui上传图片功能
- async和await的使用
- 时间戳转换
- 日期格式转换时间戳
- 时间戳转换日期格式
- 对深拷贝的认知总结
- vue-右键菜单功能
- textarea中换行、回车、空格的识别与处理
- element ui表格合并
- 合并行(上下行)
- 双层for循环
- 数组去重
- 瀑布流
- 前端多条件筛选
- 闭包的理解
- 改变this指向
- vue单选框逻辑
- 对象数组根据某个属性来进行排序
- vscode插件整理
- 对象数组多条件去重
- Blob类型数据转换Json数据类型
- Element ui做批量上传功能
- 前端cookie和后端cookie
- 强制转换https协议
- 给事件传额外参数
- 树形结构数据处理
- 查找所有父级数据
- 根据id筛选单条数据
- 动态引入阿里图标库
- 四舍五入
- 封装一个Promise.allSettled方法
- 判断输入框内是否有emoji表情
- element-ui的popover组件位置偏移
- formData上传文件时,携带【数组对象参数】
- 前端解压压缩包(zip)解压后上传解压的文件
- element ui表格列相同解决办法
- elementUI,table复选框多选,翻页/切换条数时保持选中状态
- cookie 和 token 的区别