根据ID查询父级元素路径

1、树形结构数据

const treeData = [
    {
        "id":"1",
        "code":"YSWY",
        "name":"A",
        "level":1,
        "businessLineId":"1",
        "businessGroupId":"2",
        "businessLine":"",
        "businessGroup":"A",
        "delFlag":"0",
        "lastFlag":"0",
        "assessType":"",
        "children":[
            {
                "id":"CcDnV21mdCGY3-kE3D6t7h",
                "code":"in",
                "name":"A_1",
                "level":2,
                "parentId":"1",
                "parentName":"A_1",
                "businessLineId":"1",
                "businessGroupId":"2",
                "businessLine":"",
                "businessGroup":"A_1",
                "delFlag":"0",
                "lastFlag":"0",
                "children":[
                    {
                        "id":"BotKg1IiZKj4OU82dvmOao",
                        "code":"look",
                        "name":"A_1_1",
                        "level":3,
                        "parentId":"CcDnV21mdCGY3-kE3D6t7h",
                        "parentName":"A_1_1",
                        "businessLineId":"1",
                        "businessGroupId":"2",
                        "businessLine":"",
                        "businessGroup":"A_1_1",
                        "delFlag":"0",
                        "lastFlag":"0",
                        "children":[
                            {
                                "id":"CVmPn_U1pFLoJckxeGqsNc",
                                "code":"in",
                                "name":"A_1_1_1",
                                "level":4,
                                "parentId":"BotKg1IiZKj4OU82dvmOao",
                                "parentName":"A_1_1_1",
                                "businessLineId":"1",
                                "businessGroupId":"2",
                                "businessLine":"",
                                "businessGroup":"A_1_1_1",
                                "delFlag":"0",
                                "lastFlag":"1",
                                "assessType":"1",
                                "children":[

                                ]
                            },
                            {
                                "id":"DNc4_PgOtHOKe72mh-Cxj9",
                                "code":"in2",
                                "name":"物业介入2",
                                "level":4,
                                "parentId":"BotKg1IiZKj4OU82dvmOao",
                                "parentName":"查验合同",
                                "businessLineId":"1",
                                "businessGroupId":"2",
                                "businessLine":"",
                                "businessGroup":"永升物业",
                                "delFlag":"0",
                                "lastFlag":"1",
                                "assessType":"2",
                                "children":[

                                ]
                            }
                        ]
                    }
                ]
            },
            {
                "id":"BL1ujPRJZPi79pv9wjBU82",
                "code":"zhichulei",
                "name":"A_2",
                "level":2,
                "parentId":"1",
                "parentName":"A_2",
                "businessLineId":"1",
                "businessGroupId":"2",
                "businessLine":"",
                "businessGroup":"A_2",
                "delFlag":"0",
                "lastFlag":"0",
                "assessType":"",
                "children":[
                    {
                        "id":"ATyXgN9AZDlJdKuqLom604",
                        "code":"hr_cfc",
                        "name":"A_2_1",
                        "level":3,
                        "parentId":"BL1ujPRJZPi79pv9wjBU82",
                        "parentName":"A_2_1",
                        "businessLineId":"1",
                        "businessGroupId":"2",
                        "businessLine":"",
                        "businessGroup":"A_2_1",
                        "delFlag":"0",
                        "lastFlag":"0",
                        "assessType":"",
                        "children":[
                            {
                                "id":"B3A9S4f1FAIawjI-Ptklog",
                                "code":"peixun",
                                "name":"A_2_1_1",
                                "level":4,
                                "parentId":"ATyXgN9AZDlJdKuqLom604",
                                "parentName":"A_2_1_1",
                                "businessLineId":"1",
                                "businessGroupId":"2",
                                "businessLine":"",
                                "businessGroup":"A_2_1_1",
                                "delFlag":"0",
                                "lastFlag":"1",
                                "assessType":"2",
                                "children":[

                                ]
                            }
                        ]
                    }
                ]
            }
        ]
    }
]

2、利用递归循环

const getPath = (arr, id) => {
    return arr.reduce((total, item) => {
          if (item.id == id) {
                total.push(item)
          }else{
                if (item.children && item.children.length) {
                            let path = getPath(item.children, id)
                            console.log(path)
                            if (path && path.length) {
                                total.unshift(item, ...path)
                            }
                      } 
          }
        
        return total
    }, [])
}
console.log(getPath(treeData, 'ATyXgN9AZDlJdKuqLom604'))

const getPath = (arr, id) => {
    for (let i = 0; i < arr.length; i++) {
        const item = arr[i]
        if (item.id == id) {
            return [item]
        } else if (item.children && item.children.length) {
            let path = getPath(item.children, id)
            console.log(path)
            if (path && path.length) {
                path.unshift(item)
                return path
            }
        }
    }
}
console.log(getPath(treeData, 'BotKg1IiZKj4OU82dvmOao'))
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。