javascript - 根据json最后一级的value怎么反推层级

查看:232
本文介绍了javascript - 根据json最后一级的value怎么反推层级的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

现在场景: 省市区根据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 => 推出 北京市-北京市-海淀区

求解决方案, 感谢

解决方案

用递归。给个栗子:

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");

这篇关于javascript - 根据json最后一级的value怎么反推层级的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆