Проблема заключается в этих двух строках:
let random = Math.random() * options.length;
let target = options[random];
Math.random()
возвращает значение с плавающей точкой от 0 до 1. Умноженное на length
из options
, вы получите числа от 0 до options.length
, но не обязательно целые числа.
Например, если Math.random
возвращает 0,5, и есть 7 опций, random
будет содержать значение 3.5
.
Впоследствии индексирование options
с помощью нецелого числа просто вернет undefined
. Вам необходимо снова сделать эти значения интегральными, например, используя Math.floor
.