根据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 => 推出 北京市-北京市-海淀区

求解决方案, 感谢

阅读 2.9k
2 个回答

用递归。给个栗子:

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题