从javascript数组中选择一个随机项

时间:2017-02-13 19:19:48

标签: javascript arrays bots discord

我正在制作一个可以回复我的消息的机器人。

如果我将Hi!发送到机器人,它将使用Well, hello there!回答。我只是想知道,我该如何为机器人提供多种答案选择呢? 有没有办法使用JavaScript从响应数组中选择一个随机项?

4 个答案:

答案 0 :(得分:11)

使用Math.random *数组的长度,向下舍入,作为数组的索引。

像这样:

var answers = [
  "Hey",
  "Howdy",
  "Hello There",
  "Wotcha",
  "Alright gov'nor"
]

var randomAnswer = answers[Math.floor(Math.random() * answers.length)];

console.log(randomAnswer);

答案 1 :(得分:0)

没有允许您执行此操作的JavaScript“命令”。但你可以做的是,从0到数组的长度随机选择一个整数,并获得该索引的响应数组:

var response = responses[ parseInt( Math.random() * responses.length ) ];

更简洁的方法是:

var response = responses[ Math.random() * responses.length |0 ];

其中| 0表示按位或0,在这种情况下只是将浮点数(Math.random()返回0到1的值)转换为最低整数

答案 2 :(得分:0)

您首先需要一系列可能的回复。像这样:

readStream()

然后,您可以使用var responses = ["Well hello there!","Hello","Hola!"]; 功能。此函数返回小数< 1,所以你需要将它转换为整数。

Math.random

另外,使用模数(var responses = ["Well hello there!","Hello","Hola!"]; var responseIndex = Math.floor((Math.random() * 10) + 1); )运算符将随机数保持在数组索引的范围内:

%

最后,在数组中查找随机响应:

var responses = ["Well hello there!","Hello","Hola!"];
var totalResponses = responses.length;
var responseIndex = Math.floor((Math.random() * 10) + 1) % totalResponses;

答案 3 :(得分:0)

您可以在lodash中使用 _.sample 方法:

var responses = ["Well, hello there!", "Hello", "Hola", "Yo!", "What’s up?", "Hey there."];
console.log(_.sample(responses));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>