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

discord.js遍历roles集合为何需用role[1]取值?Node语法问题求解

问题原因解释

你用到的discord.js库中,guild.roles.fetch()返回的结果是Collection类型,这是discord.js封装的、继承自JS原生Map的键值对集合结构。

  • 当你使用for...of直接遍历Map/Collection实例时,每次迭代返回的都是长度为2的数组:
    • 数组第0位role[0]是集合的键,对应当前项的角色ID
    • 数组第1位role[1]是集合的值,对应包含id、name等完整属性的角色对象
      所以你需要通过role[1]才能拿到可正常调用属性的角色实例。
更简洁的优化写法

你可以在遍历时直接解构数组,避免每次写下标调用:

const guild = client.guilds.cache.get('827888294100074516');

await guild.roles.fetch().then(roles => {
  // 直接解构出键(角色ID)和值(角色对象)
  for(const [roleId, role] of roles) {
    console.log(role.id + ' ' + role.name);
  }
});

内容的提问来源于stack exchange,提问作者Mark Andrew

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:06:02