背景:下拉框不能显示 type 字段指定的值
大致的数据结构:
let arr = [{ value: "CMCC", type: "SUBNETWORK", children: [{ value: "杭州", type: "SUBNETWORK", children: [{ value: "滨江", type: "PON", children: [], }] }, { value: "武汉", type: "SUBNETWORK", children: [{ value: "洪山区", type: "PON", children: [] }, { value: "江夏区", type: "TEST", children: [] }, ] }, { value: "上海", type: "PON", children: [] }] }]
要从arr里面过滤掉所有 type === "PON" 的数据 , 如果只有一层数据的话只要循环过滤就可以了 , 难点在于数据层级的不确定性 , 每一层都可能有 type === "PON" 或者其他的值 , 这种情况下就要考虑使用递归了
function recursivefilter(arr, value) { return arr.filter(item => { if (item.type === value) { return false } if(item.children && item.children.length > 0){ item.children = recursivefilter(item.children , value) } return true }) } console.log(arr , "PON")
结果: