Discord按名称筛选角色数组:filter函数适配问题求解
Discord角色数组筛选方案
你手里有Discord服务器的全角色数组,需要筛选出仅保留名称符合特定值的角色。之前你用filter()筛选过拥有指定角色的成员,但不知道怎么把逻辑适配到角色数组的筛选场景,之前的成员筛选代码如下:
const membersWithRole = members.filter(m => !!m.roles.find(r => r === sheet.rows[i].fields.role_id));
直接适配的筛选代码
核心思路是对角色数组直接使用filter(),在回调函数里判断角色的name属性是否匹配你的目标值:
- 精确匹配角色名称
如果你要筛选名称完全一致的角色,代码如下:
// 假设roles是你的全角色数组,targetName是你要匹配的角色名称 const targetName = "你的目标角色名称"; const filteredRoles = roles.filter(role => role.name === targetName);
- 模糊匹配(包含关键词)
如果需要筛选名称包含特定关键词的角色,用includes()即可:
const keyword = "关键词"; const filteredRoles = roles.filter(role => role.name.includes(keyword));
和之前成员筛选逻辑的区别
之前的代码是遍历成员,在每个成员的角色列表里查找匹配ID的角色;现在是直接遍历角色数组,判断每个角色的名称是否符合要求,逻辑更直接,不需要嵌套find()。
内容的提问来源于stack exchange,提问作者LaCosaCoding
相关产品推荐
相关产品推荐

