функции и массивы
вообщем так: я совершенно недавно начал изучать javascript и сейчас я решил создать викторину. у меня есть вопрос, три варианта ответа и ответ, все это забито в 1 массив, тоесть a=new array('вопрос 1", "вариант ответа 1", "вариант ответа 2", "вариант ответа 3", "правельный ответ(совпадает с одним из вариантов)"', вопрос 2", "вариант ответа 1", "вариант ответа 2", "вариант ответа 3", "правельный ответ(совпадает с одним из вариантов)") итд по этому у меня есть несколько вопросов:
1.подскажите пожалуйста функцию чтобы изменить значение массива на 5 вперед 2.также интересует функция, с помощью которой сравнивать выбранный ответ с правельным и оповестить нас в алерте всем заранее спасибо!!! |
по-моему,лучше (красивее будет код и его доработка в дальшейшем) это сделать не через массивы,а через хеши ( ассоциативные массивы,короче :)) )
a = { 'вопрос 1' : { 'вопроc' : ' Что такое JS ? ', 'ответы' : [ 'JavaScript', 'JopaScript', 'JavaSuck', ' не знаю ' ], 'ответ' : 'Javascript' }, 'вопрос 2' : { 'вопроc' : 'Что вернет Number.MIN_VALUE > 0 ', 'ответы' : [ 'true', 'false', 'Error', ' не знаю ' ], 'ответ' : 'true' } } 1.подскажите пожалуйста функцию чтобы изменить значение массива на 5 вперед ???????????? в будущее чтоли?? 2.также интересует функция, с помощью которой сравнивать выбранный ответ с правельным и оповестить нас в алерте всем заранее спасибо!!! в случае с моим (хеш) , это : var vopros = '2', // номер вопроса ( индекс) otvet = 4 // ответ - индекс из массива ответов. лучше, если это циферка var hash = a['вопрос '+vopros]; // копия хеша (массива) второго вопроса var answer = hash['ответы']; // копия хеша ответов для второго вопроса var answered = answer[otvet] // т.к. otvet = 4, то в answered будет храниться строка 'не знаю' var right = hash['ответ']; // это строка ответа для вопроса alert ( right == answered ) ; // для нас false а теперь можно и сделать функцию // имя функции camelStyle :) checkAnswer = function(vopros,otvet){ var hash = a['вопрос '+vopros], answered = hash['ответы'][otvet], // короткая запись,без создания answer right = hash['ответ']; return right == answered ; //возвращаем bool } //попробуем ответить на первый вопрос первым вариантом ответа alert ( checkAnswer(1,1 ) ? "Правильно":"Неверно" ); я изложил примерную логику, с примерами за работоспособность пока не отвечаю ( не научился пока писать сообщения так,чтобы можно было запустить скрипт и протестировать прямо тут ) |
Цитата:
|
т.е. 3. я отвлёкся)
|
спасибо!,
появился еще один вопрос: как можно с помощью функции из quiz[0] [0] перейти к quiz [1] [0] тоесть я имею ввиду, что к чему-то нужно пребавить 1 чтобы поминять [0] [0] на [1] [0] просьба доходчиво обьяснить, еще раз заранее спасибо(мне нужно будет потом менять значение массива с помощью онклика) еще раз заранее спасибо! |
я имею ввиду в таких массивах
var quiz = [ ["Вопрос 1","Ответ 1", "Ответ 2", "Ответ 3", "Правильный ответ"], ["Вопрос 2","Ответ 1", "Ответ 2", "Ответ 3", "Правильный ответ"], ["Вопрос 3","Ответ 1", "Ответ 2", "Ответ 3", "Правильный ответ"] |
про хеши я ничего не понял, попрошу обьяснить через массивы т.к. мне потом надо будет описывать свою работу, а когда не понимаешь как ты это сделал- это лажа
|
var quiz = [ ["Что такое JS ?","JavaScript", "JopaScript", "не знаю", "JavaScript"], ["Что вернет Number.MIN_VALUE > 0","true", "false", "не знаю", "true"] ] checkAnswer = function(vopros, otvet){ var answered = quiz[vopros-1][otvet], right = quiz[vopros-1][4]; return right == answered; } alert(checkAnswer(1,1) ? 'Правильно' : 'Неверно'); Вот как вы хотите, но присмотритесь к варианту который предложил melky, он более удобен. Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 05:57. |