树型数据,已知子孙节点Id,获取根节点id.
数据如下
let arr = [
{
id: 1,
chirld: [
{
id: 2,
chirld: [
{
id: 4,
chirld: []
},
{
id: 5,
chirld: []
},
]
},
{
id: 3,
chirld: [
{
id: 6,
chirld: []
},
{
id: 7,
chirld: []
},
]
},
]
},
{
id: 8,
chirld: [
{
id: 9,
chirld: [
{
id: 11,
chirld: []
},
{
id: 13,
chirld: []
},
]
},
{
id: 10,
chirld: [
{
id: 14,
chirld: []
},
{
id: 15,
chirld: []
},
]
},
]
},
]
代码
function getPid(arr, id, pId) {
let itemId = ""
for (let item of arr) {
if (item.id == id) {
itemId = pId;
break;
} else {
if (item.chirld.length) {
let newId = getPid(item.chirld, id, item.id);
if (newId) {
if (pId) {
itemId = pId
} else {
itemId = newId
}
break;
}
}
}
}
return itemId;
}
console.log(getPid(arr, 6)); // 1
console.log(getPid(arr, 14)); // 8