js数据对比的问题

// 这是个树节点
const treeData = [{
      label: '单级导航',
      arr: []
    },{
      label: '一级导航',
      arr: [],
      children: [{
        label: '二级导航',
        arr: []
      },{
        label: '二级导航2',
        arr: []
      }]
    }]
 const permission = [{
      label: '一级导航',
      href: ''
    },{
      label: '二级导航',
      href: ''
    },{
      label: '四级导航',
      href: ''
    },{
      label: '三级导航',
      href: ''
    },{
      label: '五级导航',
      href: ''
    }]
    

请问我怎么对比treeData跟data,如果data里的label不存在于treData里的话,就return出去,这里不能保证treeData跟data的长度是相同或者哪个更长的

阅读 2.1k
1 个回答
let arr = [];
// 拍平treeData
function unfoldTreeData(treeData) {
  treeData.forEach(element => {
    if (element.children) {
      unfoldTreeData(element.children);
      arr.push(element.label)
    } else {
      arr.push(element.label)
    }
  })
  return arr
}

let newTreeData = unfoldTreeData(treeData);
// 根据key为label过滤比较
const newPermission =  permission.filter(e=>{
    return !newTreeData.includes(e.label)
})

console.log(newPermission)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题