美文网首页javaScript
js - 有序的树形结构获取Path

js - 有序的树形结构获取Path

作者: 反者道之动001 | 来源:发表于2017-12-14 18:43 被阅读24次

    =-=

    结构如下

    {
        "result": 1,
        "mesg": "成功!",
        "data": [
            {
                "id": "39",
                "label": "储存",
                "parent_id": "0"
            },
            {
                "id": "26",
                "label": "安防",
                "parent_id": "0",
                "children": [
                    {
                        "id": "38",
                        "label": "安防",
                        "parent_id": "26",
                        "children": [
                            {
                                "id": "39",
                                "label": "3",
                                "parent_id": "38"
                            }
                        ]
                    }
                ]
            },
            {
                "id": "32",
                "label": "温控",
                "parent_id": "0"
            },
            {
                "id": "33",
                "label": "dsg",
                "parent_id": "0"
            },
            {
                "id": "37",
                "label": "在",
                "parent_id": "0"
            }
        ]
    }
    

    如查询39 buildArray(39)
    result ->> [0,26,38,39]

    完整代码:

    function buildArray(arrOrigin, id){
        var arr = [] // 操作数组
            ,re =[] // 结果  AND 是否匹配到
            ,run = true // 运行
    
        // arrOrigin 解析
        arrOrigin.map(e=> {
            arr.push({
                id: e.parent_id,
                children: [e],
                nextFuncTag: true, // 下一个函数的起点标识
            })
        })
        
        /**
         * 组查询 (无状态函数)
         * @e{Array} 下一个元素
         */
        function select(e){
            if(!run)return
            // 截取段落
            e.nextFuncTag && (re = [])
            re.push(e.id)
            if(e.id == id){
                run = false
            }else// 下一级查询
            if(e.children && e.children.length != 0){
                e.children.map(select)
            }
        }
    
        arr.map(select) 
    
        return re
    }
    console.log(buildArray(data.data, 39))
    
    image.png

    OK, 给大家推荐一首歌

    《当爱已成往事》


    image.png

    --END--

    相关文章

      网友评论

        本文标题:js - 有序的树形结构获取Path

        本文链接:https://www.haomeiwen.com/subject/bkflwxtx.html