js 树形结构数据 已知某一子节点 一次向上获取所有父节点
程序员文章站
2022-07-06 16:33:58
已知树形结构 res。现在有一个对象是{code: 1,name: “水上*”},想向上依次获取取得父级,比如说水上* 父节点是汉阳区 汉阳区父节点是武汉市 武汉市父节点是湖北省 最后将 汉阳区 武汉市 湖北省var res = [{ code: 1, name: "湖北省", children: [{ code: 1, name: "武汉市", children: [{ code: 1,...
已知树形结构 res。现在有一个对象是{code: 1,name: “水上*”},想向上依次获取取得父级,比如说水上* 父节点是汉阳区 汉阳区父节点是武汉市 武汉市父节点是湖北省 最后将 汉阳区 武汉市 湖北省
var res = [{
code: 1,
name: "湖北省",
children: [{
code: 1,
name: "武汉市",
children: [{
code: 1,
name: "汉阳区",
children: [{
code: 1,
name: "水上*1"
}]
}, {
code: 1,
name: "武昌区",
children: [{
code: 1,
name: "水上*2"
}]
}, {
code: 1,
name: "汉口区",
children: [{
code: 1,
name: "水上*3"
}]
}]
}, {
code: 1,
name: "十堰市",
children: [{
code: 1,
name: "郧阳区",
children: [{
code: 1,
name: "安阳镇"
}]
}, {
code: 1,
name: "茅箭区",
children: [{
code: 1,
name: "小川乡"
}]
}]
}]
}]
方法
function treeFindPath (tree, func, path = []) {
if (!tree) return []
for (const data of tree) {
// 这里按照你的需求来存放最后返回的内容吧
path.push(data.name)
if (func(data)) return path
if (data.children) {
const findChildren = treeFindPath(data.children, func, path)
if (findChildren.length) return findChildren
}
path.pop()
}
return []
}
调用
treeFindPath(res, data=> data.name==='水上*')
打印调用结果
[“湖北省”,“武汉市”,“汉阳区”,“水上*”]
本文地址:https://blog.csdn.net/weixin_43953518/article/details/107239393
上一篇: 菜单(点击其他标题关闭当前内容)