如何从数组中选择一个随机字符串?
How to choose a random string out of an array?
我想从字符串数组中随机选择一个词,但不知道如何选择。
我已经对此进行了研究,这是我目前所了解的:
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;
我复制了代码,所以水果是占位符。希望每次输出roast都能得到不同的水果
const roastList = [
'Apples',
'Bananas',
'Pears',
];
const roast = roastList[Math.floor(Math.random() * roastList.length)];
console.log(roast);
这确实有效。
但是你为什么导出它?
适合我。使用您在示例中定义的导出,可以像下面这样完成导入,例如。
const roast = require('./roast').roast;
如果只是简单地导出字符串而不是包含字符串的对象,也可以按如下方式进行:
module.exports = roast;
...
const roast = require('./roast');
另请参阅我的 repl.it 进行演示
编辑:我刚刚从您发布的评论中注意到,您可能正在寻找一种解决方案,在聊天协议中每次需要烘焙机时,您都可以得到一个新的随机烘焙。为此,我的建议是导出一个 returns 随机烤字符串的函数。请参见下面的示例,我还扩展了 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())
}
这里的问题是模块代码只会运行一次,这意味着第一次加载模块时只会选择一个"roast"。您想将 "roast" 选择逻辑包装在一个函数中,每次您想要 "roast" 某人时都可以调用该函数。
考虑 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()}`);
我想从字符串数组中随机选择一个词,但不知道如何选择。
我已经对此进行了研究,这是我目前所了解的:
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;
我复制了代码,所以水果是占位符。希望每次输出roast都能得到不同的水果
const roastList = [
'Apples',
'Bananas',
'Pears',
];
const roast = roastList[Math.floor(Math.random() * roastList.length)];
console.log(roast);
这确实有效。 但是你为什么导出它?
适合我。使用您在示例中定义的导出,可以像下面这样完成导入,例如。
const roast = require('./roast').roast;
如果只是简单地导出字符串而不是包含字符串的对象,也可以按如下方式进行:
module.exports = roast;
...
const roast = require('./roast');
另请参阅我的 repl.it 进行演示
编辑:我刚刚从您发布的评论中注意到,您可能正在寻找一种解决方案,在聊天协议中每次需要烘焙机时,您都可以得到一个新的随机烘焙。为此,我的建议是导出一个 returns 随机烤字符串的函数。请参见下面的示例,我还扩展了 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())
}
这里的问题是模块代码只会运行一次,这意味着第一次加载模块时只会选择一个"roast"。您想将 "roast" 选择逻辑包装在一个函数中,每次您想要 "roast" 某人时都可以调用该函数。
考虑 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()}`);