Математические функции для записи объекта на основе случайного числа - PullRequest
0 голосов
/ 01 мая 2018

Я хочу получить текущее значение, основанное на чем-то, если математическая функция имеет значение 0, 1 или 2. Иногда она просто хочет, чтобы я ее написал. Используя Quokka, я могу видеть, что он регистрирует, но одна из двух ошибок возникает, когда она не выполняется должным образом. Либо он записывает в журнал «Не удается прочитать свойство« ответы »о неопределенных», либо он регистрирует то же значение, даже если значение random () изменилось. Я просто хочу выяснить, почему он так себя ведет.

function question(q, answersArr) {
        this.question = q,
        this.answers = answersArr
}

let questionOne = new question("Question One?", ["Answer One", "Answer Two", "Answer Three"]);
let questionTwo = new question("Question Two?", ["Answer Four", "Answer Five", "Answer Six"]);
let questionThree = new question("Question Three?", ["Answer Seven", "Answer Eight", "Answer Nine"]);

let questionArr = [questionOne, questionTwo, questionThree];

let random = function() {
    let randoNum = Math.random() * 3;
    let roundedNum = Math.floor(randoNum);
    return roundedNum
};

console.log(random());

let current;
if (random() === 0) {
    current = array['0']
} else if (random() === 1) {
    current = array["1"]
} else if (random() === 2) {
    current = array['2']
}

console.log(current.answers);
console.log(current);

1 Ответ

0 голосов
/ 01 мая 2018

Каждый раз, когда вы звоните random(), вы генерируете новое случайное число. Таким образом, если случайно каждое случайное число не соответствует текущему номеру, с которым вы тестируете, current никогда не будет присвоено.

Вызовите random() только один раз, сохраните его в переменной, а затем проверьте эту переменную.

Вы также должны ссылаться на имя массива вопросов, которое является questionArr, а не array.

function question(q, answersArr) {
        this.question = q,
        this.answers = answersArr
}

let questionOne = new question("Question One?", ["Answer One", "Answer Two", "Answer Three"]);
let questionTwo = new question("Question Two?", ["Answer Four", "Answer Five", "Answer Six"]);
let questionThree = new question("Question Three?", ["Answer Seven", "Answer Eight", "Answer Nine"]);

let questionArr = [questionOne, questionTwo, questionThree];

let random = function() {
    let randoNum = Math.random() * 3;
    let roundedNum = Math.floor(randoNum);
    return roundedNum
};

const randIndex = random();
console.log(randIndex);

let current;
if (randIndex === 0) {
    current = questionArr['0']
} else if (randIndex === 1) {
    current = questionArr["1"]
} else if (randIndex === 2) {
    current = questionArr['2']
}

console.log(current.answers);
console.log(current);

Кроме того, ваш код может быть значительно урезан, если вы хотите:

function question(q, answersArr) {
        this.question = q,
        this.answers = answersArr
}
const questionOne = new question("Question One?", ["Answer One", "Answer Two", "Answer Three"]);
const questionTwo = new question("Question Two?", ["Answer Four", "Answer Five", "Answer Six"]);
const questionThree = new question("Question Three?", ["Answer Seven", "Answer Eight", "Answer Nine"]);
const questionArr = [questionOne, questionTwo, questionThree];
const random = () => Math.floor(Math.random() * 3);
const randIndex = random();
console.log(randIndex);
const current = questionArr[randIndex];
console.log(current.answers);
console.log(current);
...