现有一个多层级数组,层数不固定,想要通过输入一个关键字,能够将整个数组遍历一遍,然后将与name模糊匹配上的元素筛选出来,而且还要保留其所在的层级结构。
请问有什么好的实现思路么?
//举例数组结构
var treeNodeList=[
{
"name": "一级A",
"children": [{
"name": "一级-1",
"children": [{
"name": "一级-1-1",
"children": [
{
"name": "一级-1-1-1",
"type": "true",
},
{
"name": "一级-1-1-3",
"type": "true",
}
]
}]
},
{
"name": "二级B",
"children": [{
"name": "二级-1",
"children": [{
"name": "二级-2-2",
"children": [
{
"name": "二级-2-2-2",
"type": "true",
},
{
"name": "二级-2-2-1",
"type": "true",
}
]
}]
},
{
"name": "三级C",
"children": [{
"name": "三级-1",
"children": [{
"name": "三级-3-1",
"children": [
{
"name": "三级-3-3-1",
"type": "true",
},
{
"name": "三级-3-3-2",
"type": "true",
}
]
}]
},
]
//输入关键字 3 想要筛选出如下结果
[
{
"name": "一级A",
"children": [{
"name": "一级-1",
"children": [{
"name": "一级-1-1",
"children": [
{
"name": "一级-1-1-3",
"type": "true",
}
]
}]
},
{
"name": "三级C",
"children": [{
"name": "三级-1",
"children": [{
"name": "三级-3-1",
"children": [
{
"name": "三级-3-3-1",
"type": "true",
},
{
"name": "三级-3-3-2",
"type": "true",
}
]
}]
},
]
//输入关键字 A 想要筛选出如下结果
[
{
"name": "一级A",
"children": [{
"name": "一级-1",
"children": [{
"name": "一级-1-1",
"children": [
{
"name": "一级-1-1-1",
"type": "true",
},
{
"name": "一级-1-1-3",
"type": "true",
}
]
}]
}
]
自己写了几行代码,经测试通过,可供参考。