var arr = [
{
name:"新闻",
id:1,
parent_id: 0,
child:[
{
name:"广东新闻",
id:2,
parent_id: 1,
child:[
{
now: true,
name:"深圳新闻",
id:4,
parent_id: 2
},{
now: false,
name:"广州新闻",
id:5,
parent_id: 2
}
]
},
{
name:"湖南新闻",
id:3,
parent_id: 1,
child:[
{
now: true,
name:"株洲新闻",
parent_id: 3,
id:6
},{
now: false,
name:"长沙新闻",
parent_id: 3,
id:7
}
]
}]
},
{
name:"学院",
id:8,
parent_id: 0,
child:[
{
name:"广东学院",
id:9,
parent_id: 8,
child:[
{
now: true,
name: "深圳大学",
id:11,
parent_id: 9
},{
now: false,
name:"中山大学",
id:12,
parent_id: 9
}
]
},
{
name:"湖南学院",
id:10,
parent_id: 8,
child:[
{
now: false,
name:"长沙师范学院",
parent_id: 10,
id:13
},{
now: false,
name:"株洲学院",
parent_id: 10,
id:14
}
]
}]
},
];
我想获取数组的最后级一级如果now为true的话根据他的parent_id找到他的父级,
然后获取它以及它父级的id,这样不断向上获取它的父级
最后返回一个数组结果是[1,2,3,4,6,8,9,11]
这样该怎么查找?
你的意思是会有多个诸如[1,2...11]类似这样导航到最终now=true的数组?
如果是这样,其实你应该从顶部开始查询,查询到一级有分支就深拷贝一个数组对应不同分支,直到底层,然后排除掉不符合要求的。这样可能效率更高一些。当然,这样做的前提是提供的数据是符合结构的。
正确的只有3个路径,是
[[1,2,4],[1,3,6],[8,9,11]]