javaScript

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

2017-12-14  本文已影响24人  反者道之动001

=-=

结构如下

{
    "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--

上一篇 下一篇

猜你喜欢

热点阅读