记一个JS树结构路径查找

 

var a=[ {   "id" : "0000", "text" : "R1", "children" : [ {   "id" : "8978", "text" : "Aad",    "children" : [ {   "id" : "2312", "text" : "adaada", "children" : [ {   "id" : "5154", "text" : "asdsa"   }] },{    "id" : "4544", "text" : "afasf",  "children" : [ {   "id" : "5236", "text" : "afasf"   }, {   "id" : "2328", "text" : "afasf"   } ]    }] }, {   "id" : "7867", "text" : "R2", "children" : [ {   "id" : "8767", "text" : "afasf",  "children" : [ {   "id" : "2016", "text" : "afafa"   }, {   "id" : "2017", "text" : "afasd"   } ]    }, {   "id" : "7657", "text" : "h",  "children" : [ {   "id" : "7867", "text" : "afras"   } ]    } ]    } ]    } ];
    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 = [])
            if(typeof(e.id)!="undefined")
            {
                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(a, 2312));//["0000", "8978", "2312"]

 

  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值