关于#嵌套数组#的问题,如何解决?

我想在这个嵌套数组rewriteArr中过滤出含有pagepermission这个属性的对象,最后返回一个新数组

img

我想要达到的结果:

img

有谁知道的吗!求解!


let rewriteArr = [
    {
        id: 1, 
        label: '首页',
        pagepermisson: 1,
        children: [
            {
                id: 2, 
                label: '首页2',
            }
        ]
    },
    {
        id: 3, 
        label: '首页3',
        pagepermisson: 1,
        children: [
            {
                id: 4, 
                label: '首页4',
                pagepermisson: 1,
            },
             {
                id: 5, 
                label: '首页5',
            }
        ]
    }
]

function filterArr(data, arr = []) {
    data.map(item => {
        if(item.pagepermisson) {
            arr.push({id: item.id, label: item.label, pagepermisson: item.pagepermisson})
        }

        if(item.children && item.children.length) {
            filterArr(item.children, arr)
        }
    })

    return arr;
}

console.log(filterArr(rewriteArr)) // [{"id":1,"label":"首页","pagepermisson":1},{"id":3,"label":"首页3","pagepermisson":1},{"id":4,"label":"首页4","pagepermisson":1}]
 getList(){
        const rewriteArr = [
          {
            id: 1,
            label: '首页',
            pagepermisson: 1,
            children: [
              {
                id: 2,
                label: '首页2',
              }
            ]
          },
          {
            id: 3,
            label: '首页3',
            pagepermisson: 1,
            children: [
              {
                id: 4,
                label: '首页4',
                pagepermisson: 1,
              },
              {
                id: 5,
                label: '首页5',
              }
            ]
          }
        ]
        const arr = rewriteArr.filter(item => item.pagepermisson)
        arr.forEach(item=>{
          if(item.children&item.children.length){
            item.children = item.children.filter(f => f.pagepermisson)
          }
        })
        return arr
      }