You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何按指定优先级筛选字符串类型角色数组

JS按优先级筛选角色实现方案

规则梳理

先明确筛选逻辑优先级:

  • 第一优先级:返回roles数组中匹配admin-*通配规则(即以admin-为前缀)的角色
  • 第二优先级:若不存在符合第一优先级的角色,返回数组中的dist-users角色
  • 兜底逻辑:若数组中以上两类角色都不存在,默认返回dist-users

实现代码

function getMatchedRole(userObj) {
  const roleList = userObj.roles ?? [];
  // 优先匹配admin-前缀的角色
  const matchedAdminRoles = roleList.filter(role => role.startsWith('admin-'));
  if (matchedAdminRoles.length) {
    // 若需要返回所有同优先级的admin角色,直接return matchedAdminRoles即可
    return matchedAdminRoles[0];
  }
  // 非admin角色场景统一返回dist-users,覆盖数组存在该角色、兜底两种情况
  return 'dist-users';
}

// 测试示例
const user = {
  "clientName": "xyz",
  "exp": 0,
  "roles": [
    "dist-users",
    "admin-dev"
  ]
};
console.log(getMatchedRole(user)); // 输出: admin-dev

补充说明

  • 当前场景下admin-*是前缀匹配规则,用原生startsWith方法实现性能更好、代码更简洁,不需要额外引入正则或者通配匹配库。
  • 如果业务要求返回所有匹配最高优先级的角色(比如用户同时绑定admin-dev、admin-ops两个角色时需要全部返回),只需把admin角色匹配分支的返回值改为return matchedAdminRoles即可。

内容的提问来源于stack exchange,提问作者s d

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 08:33:25