第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

遞歸查找樹形結(jié)構(gòu)路徑

標簽:
JavaScript
var obj = {
  "name": "河北省",
  "code": "130000",
  "child": [{
    "name": "石家庄市",
    "code": "130100",
    "child": [{
      "name": "长安区",
      "code": "130102"
    }, {
      "name": "桥东区",
      "code": "130103"
    }]
  }, {
    "name": "唐山市",
    "code": "130200",
    "child": [{
      "name": "路南区",
      "code": "130202"
    }, {
      "name": "路北区",
      "code": "130203"
    }]
  }]
}
/**
 * 递归查找树形结构路径
 * 
 * @param {any} id 查找路径结尾的字段值
 * @param {any} catalog 目标对象
 * @param {string} [compareAttr='id'] 与查找路径结尾字段值对比的属性字段名,默认为id
 * @param {string} [childAttrs=['child']] 每级的子节点集合的字段名
 * @returns Promise resolve包含查找路径上每一级的对象信息
 */
function getPathById (id, catalog, compareAttr = 'id', childAttrs = ['child']) {
    return new Promise(function (resolve, reject) {
        if (!catalog || Object.prototype.toString.call(catalog) !== "[object Object]") {
            console.error('目标对象不存在或格式错误,catalog为非数组对象,如:{}')
            return reject()
        }
        var path = [];
        try {
            function getNodePath(node) {
                path.push(node);
                if (node[compareAttr] == id) {
                    throw('GOT it')
                }
                var children;
                childAttrs.forEach(V => {
                    if (children) return
                    children = node[V]
                })
                if (children && children.length > 0) {
                    for (var i = 0; i < children.length; i++) {
                        getNodePath(children[i]);
                    }
                    path.pop()
                } else {
                    path.pop()
                }
            }
            ​getNodePath(catalog);
        } catch (e) {
        ​    ​resolve(path)
        ​}
    })
};
getPathById('130202', obj, 'code').then(function(res) {
    console.log(res)
})
點擊查看更多內(nèi)容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消