2017-02-13 21 views
2

Я делаю бота, который может отвечать на мои сообщения.выберите случайный элемент из массива javascript

Если я отправлю Hi! боту, он ответит Well, hello there!. Мне просто интересно, что мне делать, чтобы дать боту несколько вариантов ответов? Есть ли способ выбрать случайный элемент из массива ответов с использованием JavaScript?

+1

Не могли бы вы потратить некоторое время, чтобы показать соответствующий код, который у вас есть, и то, что вы пытались заставить его работать? – trincot

+0

Вы посмотрели 'Math.Random' – Agalo

+0

Возможный дубликат [Получение случайного значения из массива JavaScript] (https://stackoverflow.com/questions/4550505/getting-a-random-value-from-a-javascript -array) –

ответ

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) в самом низком целое

+0

Вместо parseInt почему бы не Math.floor? – PaulBGD

+0

, который также работает, но я беру примеры того, с чем он может начать, и что он может видеть в Интернете. Если кто-то достаточно продвинутый, чтобы знать о Math.floor, они, вероятно, достаточно продвинуты, чтобы знать о трюках, таких как '0' – towc

+0

. Я не согласен, округление преподаётся в начальной школе, но в колледже преподаются битовые операции. – PaulBGD

3

Используйте Math.random * длину массива, округленное вниз, в виде индекса в массив.

Как это:

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

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

 
console.log(randomAnswer);

0

Вы бы сначала нужен массив возможных ответов. Что-то вроде этого:

var responses = ["Well hello there!","Hello","Hola!"]; 

Вы можете использовать функцию Math.random. Эта функция возвращает десятичное число < 1, поэтому вам нужно будет преобразовать его в целое число.

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; 

Наконец, LookUp свой ответ произвольного в массиве:

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

Math.floor (Math.random() * array.length) достаточно для генерации случайного индекса. – PaulBGD