场景:
有时候后端给我们的数据 我们不能直接使用展示,这时我们不得不去过滤一下得到我们想要的结果.
-------------------------------------------------------------------------------------------
情况 :
😊简单的过滤我们可以直接写个if else if去替换,但是往往我们都需要请求接口对应字典表去查找😔.
-------------------------------------------------------------------------------------------
解决:
我们可以简单写几个循环去查找 ,但是这种新能不佳且不容易阅读和通用性不强,💪我们这个时候就要使用递归去解决
-------------------------------------------------------------------------------------------
那我们废话不多说,直接上菜👇:
let array = [
{value:1,label:"A",children:[
{value:1,label:"A"},
{value:8,label:"yes"},
]},
{value:2,label:"B"},
{value:3,label:"C"},
]
// 过滤
/**
* array:后端字典
* areaId:查询条件
*/
FiltersFn(array, areaId) {
let re= null;
for (let i in array) {
// 条件成立时刻
if (array[i].value == areaId) {
re= array[i].label;
break;
}
if (array[i].children instanceof Array && array[i].children.length > 0) {
//存在子节点就递归
const result= FiltersFn(array[i].children, areaId);
if (result) {
return result;
}
}
}
return re;
},
console.log(FiltersFn(array,8)) //======> yes