我一直在为discord.js机器人制作命令,但现在我开始对其进行分类。目前,我的命令正在放入一个新的不和谐集合(名为client。{commandType} commands)的收集器中。我想在以下代码中将值“ i”更改为“ {commandType}”。有人知道该怎么做吗?
folder.forEach(i => {
fs.readdir(`/home/runner/commands/${i}`, (err, file) => {
if (err) console.log(err);
let jsfile = file.filter(f => f.split(`.`).pop() === `js`);
jsfile.forEach((f,e) => {
let props = require(`/home/runner/commands/${i}/${f}`);
client.commandPermissions.set(props.help.name, props.help.permissionLevel);
console.log(`${props.help.name}: ${props.help.permissionLevel}`);
client.{commandType}command.set(props.help.name, props);
^^^^^^^^^^^^^
});
});
});
那我该如何解决呢?
编辑:我很清楚,我实际上是在尝试这样做:client. + i + commands.set(props.help.name, props);
答案 0 :(得分:0)
您应该可以使用:
client[i + 'command'].set(props.help.name, props);
与许多其他语言不同,JavaScript在对象和字典/哈希图之间没有区别。您可以使用符号(obj.property
或obj['property']
)访问对象的属性。它们之间的主要区别是obj.property
看起来更好,但是在obj['property']
中,'property'
可以是普通字符串,变量或其他表达式。
答案 1 :(得分:0)
“戴帽子的家伙”的回答是
client[`${i}commands`].set(props.help.name, props);