JS多角色对应多权限,找出最大权限

168 阅读1分钟

日常项目中,经常遇到用户会有多个角色,每个角色对应的权限都不一样,需要找出最大的权限,

// 拥有的角色
let roleCodeArr = ["admin2", "123", "维护人员", "超级管理员", "管理员"];
/**
 * @class 优先级
 * @value 对应值
 */
let typeObj = {
  超级管理员: {
    class: 0,
    value: "权限1",
  },
  管理员: {
    class: 1,
    value: "权限2",
  },
  维护人员: {
    class: 3,
    value: "权限3",
  },
  使用者: {
    class: 4,
    value: "权限4",
  },
};
// 过滤出对应的权限
let data = roleCodeArr
  .map((item) => {
    if (typeObj[item]) {
      return typeObj[item];
    }
  })
  .filter((item) => item);

// 排序,找出优先级最高的
let code = data.sort((a, b) => {
  return a.class - b.class;
})[0].value;

console.log(code);