【问题标题】:How to get data from Collection Map in discord.js如何从 discord.js 中的 Collection Map 获取数据
【发布时间】:2020-06-21 19:24:07
【问题描述】:

对于我的不和谐机器人,我想要一个 !help 命令,它遍历所有命令,获取名称,并将它们在消息中返回给用户。我创建了 fs 来遍历我的 /commands/ 文件夹:

for (const file of commandFiles) {
    const command = require(`./commands/${file}`);
    client.extraCommands.set(command.name, command);
}

console.log(client.extraCommands);

返回一个 Collection Map,如下所示:(为简单起见已裁剪)

Collection [Map] {
  'args-info' => {
    name: 'args-info',
    execute: [Function: execute]
  },
  'channel-info' => {
    name: 'channel-info',
    execute: [Function: execute]
  }

我只需要将每个命令的name 存储到一个数组中。

我尝试循环获取密钥,但这似乎不起作用...

提前感谢您的帮助

【问题讨论】:

  • 如果是Map,你可以循环遍历for(const key of client.extraCommands.keys()){/* Add key to an array */}或者直接使用client.extraCommands.keys(),因为它是一个迭代器

标签: javascript node.js npm discord discord.js


【解决方案1】:

看起来键名是您的命令名,所以这应该可以解决问题。


let keys = Array.from(client.extraCommands.keys());

【讨论】:

    【解决方案2】:

    两行代码都会返回你想要的结果。

    [...client.extraCommands.keys()] //using map keys
    [...client.extraCommands.values()].map(({name})=> name); // using key 'name' from each map value
    

    【讨论】:

      【解决方案3】:

      所以,起初,我认为我应该循环遍历所有文件并获取“名称”属性。但是,.keys() 为地图内的所有属性返回一个数组 Documentation

      【讨论】:

      • 我从来没有说过你需要自己循环来获取密钥。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      • 1970-01-01
      • 2013-01-14
      • 2020-12-09
      • 2022-01-22
      • 2016-12-13
      相关资源
      最近更新 更多