js树状数据结构,查询上一层 某个字段
怎么根据当前id查找父级对象比如南京id:101,找到江苏这个对象,谢谢各位老哥
[ {
id:1,
pid:0
nama:'中国',
children:[
{
id:5,
pid:1
nama:'江苏',
children:[
{
id:101,
pid:5
nama:'南京',
}
]
}
]
}
]
回答:
const findParent = (data, id) => {
const helper = (node, origin) => {
if (node.id === id) return origin === dummyRoot ? null : origin;
const children = node.children ?? [];
for (const neighbor of children) {
const ans = helper(neighbor, node);
if (ans) return ans;
}
return null;
};
const dummyRoot = { children: data };
return helper(dummyRoot, null);
};
console.log(findParent(data, 101));
console.log(findParent(data, 5));
console.log(findParent(data, 1));
console.log(findParent(data, 7));
回答:
可以获取目标id的父级树上所有的id:
getIds(data, 101);
function getIds(data, id) {
let tArr = [];
loop(data);
return tArr;
function loop(arr) {
return arr.some((n) => {
if (n.id === id) {
tArr.push(n.id);
return true;
}
const child = n.children || [];
if (child && child.length > 0) {
tArr.push(n.id);
if (loop(child)) return true;
tArr.unshift();
}
return false;
}, [])
}
}
以上是 js树状数据结构,查询上一层 某个字段 的全部内容, 来源链接: utcz.com/p/935577.html