我正在尝试从字符串数组中选择一个随机词,但不知道如何做。
我对此进行了研究,到目前为止,这是我的研究
roast.js
const roastList = [
'Apples',
'Bananas',
'Pears',
];
const roast = roastList[Math.floor(Math.random() * roastList.length)];
module.exports = {
roast
};
index.js:
case 'roast':
if (!message.mentions.users.size) {
return message.reply('you need to tag a user in order to roast them!');
}
message.channel.send(`Hey ${taggedUser}, ${roast}`);
break;
我复制了代码,因此果实是占位符。我希望每次输出烤肉时都能得到不同的水果。
答案 0 :(得分:1)
为我工作。例如,使用您在示例中定义的导出,可以完成导入,如下所示。
const roast = require('./roast').roast;
如果仅导出字符串而不是包含字符串的对象,则还可以执行以下操作:
module.exports = roast;
...
const roast = require('./roast');
另请参阅我的repl.it进行演示
编辑:我刚刚从您发布的评论中注意到,您可能正在寻找一种解决方案,每次在聊天协议中需要烘焙时,您都可以获取一个新的随机烘焙。为此,我的建议是导出一个返回随机烘烤字符串的函数。参见下面的示例,我还扩展了repl.it演示。
roast3.js
const roastList = [
'Apples',
'Bananas',
'Pears',
];
function roast() {
return roastList[Math.floor(Math.random() * roastList.length)]
}
module.exports = {
roast
};
index.js
const roast3 = require('./roast3').roast;
for (x=0; x<10; x++) {
console.log(roast3())
}
答案 1 :(得分:1)
这里的问题是模块代码将仅运行一次,这意味着在第一次加载模块时将仅选择一个“烘烤”。您希望将“烘烤”选择逻辑包装在一个函数中,每次要“烘烤”某人时都可以调用该函数。
考虑使roast.js
导出函数:
const roastList = [
'Apples',
'Bananas',
'Pears'
];
module.exports = function () {
return roastList[Math.floor(Math.random() * roastList.length)];
};
然后在您的模板中调用该函数:
const roast = require('./roast.js');
...
message.channel.send(`Hey ${taggedUser}, ${roast()}`);
答案 2 :(得分:0)
const roastList = [
'Apples',
'Bananas',
'Pears',
];
const roast = roastList[Math.floor(Math.random() * roastList.length)];
console.log(roast);
这实际上有效。 但是为什么要出口呢?