递归去重所有数组中的对象、以及对象中的children数组中的对象

205 阅读1分钟

原数组

nodeArr=[    {children:[         {name:"李四",id:123456},                                    {name:"网二",id:123456}     ],
     name:"张三",
     id:123456
    },
    {name:"王二",id:666666},
    {name:"王二",id:666666},
    {children:[
         {name:"李四", id:123456}, 
         {name:"网二", id:123456 }    
      ],
     name:"张三",
     id:123456
    },
    {name:"麻子",id:665556}
    {children:[
         {name:"李四",
          id:123456,
          children:[
             {name:"李四三",id:123456},                     
             {name:"网二呃",id:123456},
             {name:"李四三",id:123456}
           ]
         }, 
         {name:"网二", id:123456 }    
      ],
     name:"张三",
     id:123456
    }
]

现在要去除该数组中的所有相同对象,以及对象中chilren中的相同对象

`
  let diGuiQuChong = (nodeArr) => {
          if (nodeArr.length) {

            //对一级节点遍历
            let qc = nodeArr.map(re => {
              //当前若是有下级目录
              if (re.children) {
                //对下级目录的数组去重
                let qcchild = [...new Set(re.children)]
                //对下级目录的数组进行递归操作
                return { ...re, children: [...new Set(diGuiQuChong(qcchild))] }
              } else {
                return re
              }
            })
            return [...new Set(qc)]
          } else {
            return nodeArr
          }
        }

`