首页 > 解决方案 > 如何从数组中选择一个随机字符串?

问题描述

我正在尝试从字符串数组中选择一个随机单词,但无法弄清楚如何。

我已经对此进行了研究,这是我目前所拥有的:

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;

我复制了代码,所以水果是占位符。希望每次输出烤肉都能得到不一样的水果。

标签: node.jsdiscord.js

解决方案


这里的问题是模块代码只会运行一次,这意味着第一次加载模块时只会选择一个“烘焙”。您想将“烘烤”选择逻辑包装在一个函数中,每次您想“烘烤”某人时都可以调用该函数。

考虑将roast.jsexport 设为函数:

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()}`);

推荐阅读