Принимая случайное значение из массива - Javascript

1

У меня есть значения массива od, и я хочу извлечь из него случайные данные. Это мой код:

var bonus1='Opony zimowe';
var bonus2='Alarm';
var bonus3 = 'Bagażnik';
var bonus4 = 'Relingi';
var bonus5 = 'Box na narty';
var bonusy = [bonus1, bonus2, bonus3, bonus4, bonus5];
var pickBonus= bonusy[Math.floor(Math.random() * bonusy.length)];

Но он не показывает случайное значение (всегда он console.log - "Тревога"):

Изображение 174551

Что случилось?

  • 4
    ваш код работает, вы просто печатаете одно и то же значение pickBonus снова и снова ... вам нужно запустить часть Math.random() , чтобы получить новое значение.
  • 1
    @tipsfedora то же самое здесь
Показать ещё 1 комментарий
Теги:
arrays
math
random

3 ответа

10

На скриншоте видно, что вы в основном пытаетесь напечатать одно и то же значение несколько раз, ожидая другого значения.

Это не сработает, вам нужно получить случайное значение снова из массива каждый раз. Сделайте его функцией

 var pickBonus= () => bonusy[Math.floor(Math.random() * bonusy.length)];

А теперь вызовите его как

console.log( pickBonus() );
console.log( pickBonus() );
console.log( pickBonus() );
console.log( pickBonus() );

демонстрация

var bonus1='Opony zimowe';
var bonus2='Alarm';
var bonus3 = 'Bagażnik';
var bonus4 = 'Relingi';
var bonus5 = 'Box na narty';
var bonusy = [bonus1, bonus2, bonus3, bonus4, bonus5];
var pickBonus= () => bonusy[Math.floor(Math.random() * bonusy.length)];

console.log( pickBonus() );
console.log( pickBonus() );
console.log( pickBonus() );
console.log( pickBonus() );
2

pickBonus должен быть функцией, а не переменной в вашем случае.

Затем вы можете запускать этот тип кода и всегда получать случайные значения:

var bonus1 = 'Opony zimowe';
var bonus2 = 'Alarm';
var bonus3 = 'Bagażnik';
var bonus4 = 'Relingi';
var bonus5 = 'Box na narty';
var bonusy = [bonus1, bonus2, bonus3, bonus4, bonus5];

function pickBonus() {
  return bonusy[Math.floor(Math.random() * bonusy.length)];
}

console.log(pickBonus());
console.log(pickBonus());
console.log(pickBonus());
console.log(pickBonus());
1

заменить последнюю строку

var pickBonus= bonusy[Math.floor(Math.random() * (bonusy.length-1)) + 1]

и оберните весь код в функцию, чтобы заполнить новое значение pickBonus в каждом вызове функции

Ещё вопросы

Сообщество Overcoder
Наверх
Меню