从大到小不知道什么意思。。是从根节点-》到给定的节点这样输出?代码大概如下,有帮助或启发麻烦点个采纳【本回答右上角】,谢谢~~有其他问题可以继续交流~
var region = {
regions: [
{ id: 0, name: '中国', parent_id: -1 },
{ id: 1, name: '安徽', parent_id: 0 },
{ id: 2, name: '江苏', parent_id: 0 },
{ id: 3, name: '合肥', parent_id: 1 },
{ id: 4, name: '庐阳区', parent_id: 2 },
{ id: 5, name: '大杨镇', parent_id: 4 },
{ id: 6, name: '南京', parent_id: 2 },
{ id: 7, name: '玄武区', parent_id: 6 },
]
}
function getParents(o, name) {
var item = o.regions.find(i => i.name == name);
var parents = [item.name];
do {
item = o.regions.find(i => i.id == item.parent_id);//找父节点
if (item) parents.push(item.name);
else break;//找不到退出循环
}
while (true);
return parents;
}
var parents = getParents(region, '大杨镇');
console.log(parents.reverse().join('-->'))//如果是子节点放到父节点,将.reserve()去掉
parents = getParents(region, '南京');
console.log(parents.reverse().join('-->'))
要怎么按从大到小输出?json数据发一下
你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)
var json = {"regions":[
{"id":0,"name":"中国","parent_id":-1},
{"id":1,"name":"安徽","parent_id":0},
{"id":2,"name":"江苏","parent_id":0},
{"id":3,"name":"合肥","parent_id":1},
{"id":4,"name":"庐阳区","parent_id":3},
{"id":5,"name":"大杨镇","parent_id":4},
{"id":6,"name":"南京","parent_id":2},
{"id":7,"name":"玄武区","parent_id":6},
{"id":8,"name":"梅园新村街道","parent_id":7},
{"id":9,"name":"上海","parent_id":0},
{"id":10,"name":"黄浦区","parent_id":9},
{"id":11,"name":"外滩","parent_id":10},
{"id":12,"name":"安庆","parent_id":1},
{"id":13,"name":"徐汇区","parent_id":9},
{"id":14,"name":"闵行区","parent_id":9},
{"id":15,"name":"虹梅街道","parent_id":14}
]}
function fun(name,arr) {
var pt = {};
var sid;
var ra = [];
arr.forEach(function(v, i){
pt[v.id] = v;
if (v.name==name)
sid = v.id;
});
//console.log(pt,sid);
while (sid in pt) {
ra.unshift(pt[sid].name);
sid = pt[sid].parent_id;
}
return ra;
}
var a = fun("梅园新村街道",json.regions);
console.log(a);