var data = [
{
name: '红色集团总部',
userName: '刘备',
id: 1,
children: [
{
name: '红色集团分部1',
userName: '刘备儿子1',
id: 5,
children: [
{
name: '红色最小分部',
userName: '刘备最小儿子',
id: 14
}
]
},
{
name: '红色集团分部2',
userName: '刘备儿子2',
id: 6
}
]
},
{
name: '黄色集团总部',
userName: '张飞',
id: 2,
children: [
{
name: '黄色集团分部1',
userName: '张飞儿子1',
id: 7
},
{
name: '黄色集团分部2',
userName: '张飞儿子2',
id: 8,
children: [
{
name: '黄最小部',
userName: '张飞最小儿子',
id: 15
}
]
}
]
},
{
name: '蓝色集团总部',
userName: '沙僧',
id: 3,
children: [
{
name: '蓝色集团分部1',
userName: '沙僧儿子1',
id: 9,
children: [
{
name: '蓝色小小分部1',
userName: '沙僧小小儿子1',
id: 16
}
]
},
{
name: '蓝色集团总部2',
userName: '沙僧儿子2',
id: 10
},
{
name: '蓝色集团总部3',
userName: '沙僧儿子3',
id: 11,
children: [
{
name: '蓝色小小分部2',
userName: '沙僧小小儿子2',
id: 17
}
]
}
]
},
{
name: '绿色集团总部',
userName: '孙悟空',
id: 4,
children: [
{
name: '绿色孙悟空',
userName: '孙悟空儿子1',
id: 12,
children: [
{
name: '绿色孙悟空66',
userName: '孙悟空最最儿子',
id: 18
}
]
},
{
name: '绿色金库咒',
userName: '孙悟空儿子2',
id: 13
}
]
}
]
function getPathById(data, id) {
let arr = [], // 操作数组
res = [], // 结果 AND 是否匹配到
run = true // 运行
// data 解析
data.map(e => {
arr.push({
pid: e.id,
children: [e],
nextFnTag: true // 下一个函数的起点标识
})
})
/**
* 组查询 (无状态函数)
* @e{Array} 下一个元素
*/
function getPath(item) {
console.log(item)
if (!run) return
// 截取段落
item.nextFnTag && (res = [])
if (typeof item.id !== 'undefined') res.push(item.id)
if (item.id === id) run = false
// 下一级查询
if (item.children && item.children.length) item.children.map(getPath)
}
arr.map(getPath)
return res
}
js目录树结构过滤路径
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- var aim_path;var dirlist = fs.readdirSync(aim_path);if( d...
- 简介 环境一搭好一般都不大好改动路径文件夹和文件名称,所以规范些比较好。 规则经验 文件、文件夹命名法 用字母或下...
- 1.CSS的全称是什么? 答:Cascading Style Sheets——层叠样式表 2.CSS有几种引入方式...