极客大学-前端进阶训练营【2020最新版内置文档资料】
准确的路由菜单或树形构造的JSON数据递归获取实现总结
在理论开发中,对树形JSON数据处理的业务场景十分常见;而且这些数据必然是多层级的,那么很重要的一点就是要做到递归。特地是在动静路由筛选和树形构造数据筛选中。正所谓,“工欲善其事,必先利其器”。所以本文总结几种用于解决失去咱们业务中所需的真正数据的办法。
二.实现办法
“splice”办法 (不举荐):
阐明:这种办法只适应于唯一性的条件(比方:过滤唯一性id)的场景。
如果是用在筛选树形数据或者路由菜单(比方:过滤hidden为true)的场景,会因为其实正向删除index值,故导致第一次除外的每次遍历递归的index值不精确,所以删除的值也是不对的,故不举荐。
代码实现:
//只实用于唯一性的id的递归过滤function filterData(arr, id) { arr.forEach((item, index) => { if (item.id === id) { arr.splice(index, 1) } if (item.children && item.children.length) { filterData(item.children, id) } })}