2014-02-20 5 views
-1

У меня есть рабочая функция в этом генераторе случайных имен, но он всегда заканчивается возвратом «неопределенного» в какой-то момент. Я пробовал вычитать 1 из массива, чтобы он не заходил слишком далеко, но это ничего не меняет. Как я могу проверить это и отладить его?Случайное имя Возвращение undefined

jsbin

+0

Завершение работы даст вам неопределенные в некоторых случаях – Huangism

+0

спасибо! это оно. – CrystalH

ответ

5

Вы используете Math.round(), когда вы должны использовать Math.floor().

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

+0

Отлично, спасибо. Похоже, мне нужно больше узнать о математических методах. – CrystalH

1

Изменить эту строку:

вар случайные = Arry [Math.round (math.random() * arry.length)];

Для этого :

вар случайные = Arry [Math.round (Math.random() * (arry.length - 1))];

+0

Уже пробовал, что @petar, похоже, я должен использовать Math.floor вместо этого. – CrystalH

+0

Хм, странно, я не получаю «неопределенный» после этого ... –

+0

Я ошибся, я сделал это. var random = arry [Math.round (Math.random() * arry.length) - 1]; – CrystalH

Смежные вопросы