[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 的區別