树形结构操作

删除树形结构第三层孩子
/**
     * @method 去除树形结构按钮权限
     * @param  {Array} data 原始权限数组
     * @return {Array} 去除按钮权限的数组
*/

export function filterData(data) {
  // 到叶子节点了,返回,递归出口
  if (data == undefined || data == null || data.length == 0) {
    return
  }
  else {
    // 对每一层,遍历这个数组,调用filterData方法对每个元素下的数组进行同样的操作
    // 筛掉当前层的status为2的对象
    myFilter(data)
    for (let index in data) {
      filterData(data[index].menuChildren)
    }
  }
  return data
}
// 改变引用的filter方法
function myFilter(data) {
  if (data == null || data == undefined || data.length == 0) {
    return
  } else {
    for (let index = data.length - 1; index >= 0; index--) {
      // 删除状态2的元素,且不为过渡结点的元素
      if (data[index].privilegeType === 2) {
        data.splice(index, 1)
      }
    }
  }
}

获取树形结构第三层数据
/**
     * @method 获取按钮权限数据
     * @param  {Array} list 原始权限数组
     * @return {Array}  返回按钮权限数组  btnList
*/
let btnList = []
export function findBtnList(list) {
  list.forEach(val => {
    if (val.privilegeType === 2) {
      btnList.push(val)
    }
    if (val.privilegeType !== 2) {
      if (val.menuChildren && val.menuChildren.length > 0) {
        findBtnList(val.menuChildren)
      }
    }
  })
  return btnList
}
原文地址:https://www.cnblogs.com/0520euv/p/15069666.html