2015-08-31 3 views
-3
function print(message) { 
    document.write(message); 
} 

function randomNumber (range) { 
    return Math.floor(Math.random() * range + 1); 
} 

var questions = [ 
    ['What is ' randomNumber(10) + randomNumber(10) + '?', '''displayanswerhere'''] 
    ['What is 4 + 2?', randomNumber(10)], 
    ['What is 8 + 8?', randomNumber(10)], 
    ['What is 1 + 7?', randomNumber(10)], 
    ['What is 8 + 6?', randomNumber(10)], 
]; 

function quiz (questions) { 
    var score; 
    var wrongAnswers = correctAnswers = '<ol>'; 
    for (i = 0; i < questions.length; i += 1) { 
    var userAnswer = parseInt(prompt(questions[i][0])); 
    if (userAnswer === questions[i][1]) { 
     score += 1; 
     correctAnswers += '<li>' + questions[i][0] + '</li>'; 
    } else { 
     wrongAnswers += '<li>' + questions[i][0] + '</li>'; 
    } 
    } 
    function printScores (wrongAnswers, correctAnswers, score) { 
    print('<p> You got ' + score + ' questions right.</p>'); 
    print('<h2> You got these questions correct:</h2>'); 
    print(correctAnswers + '</ol>'); 
    print('<h2> You got these questions incorrect:</h2>'); 
    print(wrongAnswers + '</ol>'); 
    } 
    printScores(wrongAnswers, correctAnswers, score); 
} 
quiz(questions); 

В двумерных массивах «вопросы» я хочу, чтобы субмассивы состояли из вопроса и ответа. Я хочу, чтобы вопрос состоял из двух случайных чисел, добавленных вместе, но я также хочу, чтобы ответ, который также находится в массиве, в индексе [1], в подматрице, чтобы соответствовать вопросу, имел тот же ответ, что и вопрос , Я не уверен, как это сделать, потому что я использовал функцию для генерации случайных чисел, и каждый раз, когда я называю это, возвращается новое случайное число.JavaScript - Массивы и подмассивы

Код предназначен для создания 5 вопросов математической викторины, которая создает ответы на вопросы со случайно сгенерированными номерами.

Буду признателен, если кто-то может решить мою проблему. Что было бы еще лучше, если бы кто-то мог сделать это простым способом, который я мог бы понять, потому что я новичок в JavaScript ... так что черная магия javascript, спасибо.

+2

Можете ли вы привести пример того, что вы говорите? Не код для его создания, а то, что должен делать код? –

+4

Устраните свое название вопроса, пожалуйста. Это не описательно. – Halcyon

+0

На каком языке '' '' displayanswerhere '' ''? –

ответ

1

Если я вас правильно понял, вы хотите сделать что-то вроде этого:

var questions = [ 
    ['What is ' + x + ' + ' + y + '?', x + y], 
    ['What is ' + x + ' + ' + y + '?', x + y], 
    ['What is ' + x + ' + ' + y + '?', x + y], 
]; 

где х и у генерируются случайным образом на лету. Итак, ваш реальный вопрос: Как я могу получить доступ к значению других ячеек массива при создании массива, на который ответ «это невозможно», особенно если вы храните значения как часть вопроса в строке. Вместо этого попробуйте что-то вроде этого:

var questions = [ 
    [randomNumber(10), '+', randomNumber(10)], 
    [randomNumber(10), '+', randomNumber(10)], 
    [randomNumber(10), '+', randomNumber(10)], 
]; 

Затем измените свои функции так, чтобы они печатали вопрос со значениями. Что-то вроде
prompt('What is ' + questions[i][0] + ' ' + questions[i][1] + ' ' + questions[i][2] + '?')

И потом, вы можете получить ответ на свой вопрос с questions[i][0] + questions[i][2].

PS: Я ответил на ваш вопрос, но вы должны знать, что это не то, для чего предназначен StackOverflow. Вопросы здесь должны быть реальными вопросами, а не проблемами для решения, поэтому вы всегда должны обязательно писать так, чтобы люди с одинаковой проблемой могли их найти. Для получения дополнительной информации прочитайте help section about how to ask.

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