树形扁平化方法

树形扁平化方法

// 树形扁平化方法
  const flatten = function (arr) {
    const res = []; // 用于存储递归结果(扁平数据)
    // 递归函数
    const fn = (source) => {
      source.forEach((el) => {
        res.push(el);
        // 执行递归
        if (Array.isArray(el.children) && el.children.length > 0) {
          fn(el.children);
        } // 子级递归
      });
    };
    fn(arr);
    return res;
  };
  // 扁平化后
  const flattened = flatten(list);
  // console.log("扁平化后", flattened);

  const rules = function (perms) {
    return flattened.some((item) => {
      const isRules = item.perms === perms && item.status === 1;
      if (isRules) {
        flag = true
      }
      return isRules;
    });
    // 简化写法
    /* return item.perms === perms && item.status === 1 */
  };
  rules(perms)
  return flag

  

posted @ 2021-12-01 14:50  挽你手  阅读(176)  评论(0编辑  收藏  举报