Js 递归树形数据查询该节点的所有父级节点、查询该节点的所有子节点等
数据
var data2= [
{
id: 1,
label: '一级 1',
children: [{
id: 4,
label: '二级 1-1',
children: [{
id: 9,
label: '三级 1-1-1'
}, {
id: 10,
label: '三级 1-1-2'
}]
}]
},
{
id: 2,
label: '一级 2',
children: [{
id: 5,
label: '二级 2-1'
}, {
id: 6,
label: '二级 2-2'
}]
},
{
id: 3,
label: '一级 3',
children: [{
id: 7,
label: '二级 3-1'
}, {
id: 8,
label: '二级 3-2'
}]
}];
方法
根据ID获取该节点的所有父节点的对象
function getParentId(list,id) {
for (let i in list) {
if(list[i].id==id){
return [list[i]]
}
if(list[i].children){
let node=getParentId(list[i].children,id);
if(node!==undefined){
return node.concat(list[i])
}
}
}
}
getParentId(data2,10)//打印出来就是想要的数据
根据ID获取该节点的对象
function getId(list,id) {
for (let i in list) {
if(list[i].id==id){
return [list[i]]
}
if(list[i].children){
let node=getParentId(list[i].children,id);
if(node!==undefined){
return node;
}
}
}
}
getId(data2,4)//打印出来就是想要的数据
根据ID获取所有子节点的对象,首先把该节点的对象找出来,上面getId()这个方法
function getNodeId(list,newNodeId=[]) {
for (let i in list) {
newNodeId.push(list[i])
if(list[i].children){
getNodeId(list[i].children,newNodeId);
}
}
return newNodeId;
}
//查找id=4的所有子级节点
let objId=getId(data2,4);
let childId=getNodeId(objId);//打印出来就是想要的数据
我这里的方法都是查找的对象,如果只是返回ID,根据需要Push的时候改成Push id 即可。