数组转为树结构
const data = [ { id: "01", lable: "项目经理", pid: "" }, { id: "02", lable: "产品leader", pid: "01" }, { id: "03", lable: "UIleader", pid: "01" }, { id: "04", lable: "技术leader", pid: "01" }, { id: "05", lable: "测试leader", pid: "01" }, { id: "06", lable: "运维leader", pid: "01" }, { id: "07", lable: "产品经理", pid: "02" }, { id: "08", lable: "产品经理", pid: "02" }, { id: "09", lable: "UI设计师", pid: "03" }, { id: "10", lable: "前端工程师", pid: "04" }, { id: "11", lable: "后端工程师", pid: "04" }, { id: "12", lable: "后端工程师", pid: "04" }, { id: "13", lable: "测试工程师", pid: "05" }, { id: "14", lable: "测试工程师", pid: "05" }, { id: "15", lable: "运维工程师", pid: "06" }, ]; let d = dataTotree(data) console.log(d,'d') function dataTotree(data) { let tree = [] let obj = {} data.forEach(v => { v.children = [] obj[v.id] = v }) data.forEach(v => { if(v.pid) { obj[v.pid].children.push(v) } else { tree.push(v) } }) return tree }
树结构转为数组
let node = { "id": "1", "pId": "0", "sysTypePreCode": null, "sysTypeCode": "100", "sysTypeName": "常规自动气象站", "sysTypeAlias": "常规自动站", "levelCode": "0", "orderNo": 1, "children": [ { "id": "2", "pId": "1", "sysTypePreCode": null, "sysTypeCode": "100001", "sysTypeName": "国家自动站", "sysTypeAlias": "国家自动站", "levelCode": "1", "orderNo": 1, "children": [ { "id": "432199690159652864", "pId": "2", "sysTypePreCode": null, "sysTypeCode": "100001001", "sysTypeName": "气候气象站", "sysTypeAlias": "气候站", "levelCode": "3", "orderNo": 1, "children": [], "obserElements": [], "pid": 2 }, { "id": "432214459457470464", "pId": "2", "sysTypePreCode": null, "sysTypeCode": "100001002", "sysTypeName": "基准气象站", "sysTypeAlias": "基准站", "levelCode": "3", "orderNo": 1, "children": [], "obserElements": [], "pid": 2 }, { "id": "432235171438133248", "pId": "2", "sysTypePreCode": null, "sysTypeCode": "100001003", "sysTypeName": "一般气象站", "sysTypeAlias": "一般站", "levelCode": "2", "orderNo": 1, "children": [], "obserElements": [], "pid": 2 } ], "obserElements": [ { "id": "0", "obserEleCode": "1306006", "obserEleAlias": "过去6小时降水量", "obserEleName": "PRE_6H", "obserSysId": 436565689684197400, "obserProId": null, "obserProCode": null }, { "id": "0", "obserEleCode": "1306005", "obserEleAlias": "过去3小时降水量", "obserEleName": "PRE_3H", "obserSysId": 436565689684197400, "obserProId": null, "obserProCode": null } ], "pid": 1 }, { "id": "3", "pId": "1", "sysTypePreCode": null, "sysTypeCode": "100002", "sysTypeName": "类区域站", "sysTypeAlias": "类区域站", "levelCode": "1", "orderNo": 2, "children": [], "obserElements": [], "pid": 1 } ], "obserElements": [], "pid": 0 } console.log(treeToarr(node)) function treeToarr(node) { let queue = [node] let data = [] while(queue.length !== 0) { let item = queue.shift() data.push({ id: item.id, name: item.name, parentId: item.parentId }) let children = item.children if(children) { children.forEach(v => { queue.push(v) }) } } return data }
js数组与树结构相互转换
最新推荐文章于 2024-08-12 22:28:07 发布