用filter过滤,再加个递归就行了 function filterData(data){ return data.filter(item => { if(item.isShow) { return true; } else if(item.children && item.children.length) { const res = filterData(item.children); if(res.length){ item.children = res; return true; } } return false; }) }