javascript - 根据json最后一级的value怎么反推层级
黄舟
黄舟 2017-04-11 11:27:26
[JavaScript讨论组]

现在场景: 省市区根据code选择,前端拿到server返回的区/县的code码,前端需要渲染成 省/市/区 格式;比如拿到海淀区对应的code,需要反推出 北京市-北京-海淀区;

数据结构如下

var region = {
        "level": "3",
        "cities": [{
            "name": "北京市",
            "code": "1",
            "elements": [{
                "name": "北京市",
                "code": "35",
                "elements": [{
                    "name": "东城区",
                    "code": "397",
                    "elements": []
                }, {
                    "name": "海淀区",
                    "code": "402",
                    "elements": []
                }]
            }]
        }, {
            "name": "河北省",
            "code": "3",
            "elements": [{
                "name": "石家庄市",
                "code": "37",
                "elements": [{
                    "name": "长安区",
                    "code": "430",
                    "elements": []
                }]
            }]
        }]
    };
    

即知道402 => 推出 北京市-北京市-海淀区

求解决方案, 感谢

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
ringa_lee

用递归。给个栗子:

function levels(city, code) {
  if(city.code == code){
    return [city.name];
  }

  for(let element of city.elements) {
    let temp = levels(element, code);
    if(temp) {
      if(city.name) temp.unshift(city.name);
      return temp;
    }
  }
}

levels({ elements: region.cities }, "430");
迷茫

深层遍历一次。

类似于

for(var i in list) {
    for(var j in list[i]) {
        if(xxxx) {
            console.log(i, j);
        }
    }
}

拿到索引就能拿到对应的省市区。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号