我正在制作一个可以回复我的消息的机器人。
如果我将Hi!
发送到机器人,它将使用Well, hello there!
回答。我只是想知道,我该如何为机器人提供多种答案选择呢? 有没有办法使用JavaScript从响应数组中选择一个随机项?
答案 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>