Всем привет. Пишу скрипт теста на совместимость. Нужно сравнить ответы двух пользователей и рассчитать результат в процентах. В вопросе теста может быть 2, 3 или 4 варианта ответов. Если вариантов ответов 2, выполняется один код, а если 3, другой, ну и соответственно 4. Думаю, можно ли как-то все в одной функции реализовать или придется писать 3 проверки if-ом на количество вариантов ответов и 3 функции расчета.
В массиве formula хранятся данные для расчета результата. Первый элемент(3)-3 вопроса, второй элемент(10), прибавляет 10, если ответы пользователей совпали, третий элемент(6.7), прибавляет 6.7, если второе условие верно, ну и четвертый элемент прибавляет 3.4, если третье условие верное. В массивах user1 и user2 хранятся идентификаторы ответов пользователей.
var formula = [3,10,6.7,3.4];
var user1 = [1,0,1,1,1,0,0,2,2,2];
var user2 = [2,1,2,0,1,2,2,2,0,0];
var result = 0;
calculate();
function calculate(){
if(formula[0]==3){ //если вариантов ответов 3
for(var i=0; i<user1.length; i++){
if(user1[i]==user2[i]){ //если ответы совпали, прибавляем 10
result += formula[1];
}
else if(user1[i]==1 && user1[i]>user2[i] || user2[i]==1 && user2[i]>user1[i] || user1[i]==2 && user2[i]==1 || user2[i]==2 && user1[i]==1){ //если у одного из пользователей id ответа 0, а у другого 1 или у одного 2, а у другого 1
result += formula[2];
}
else{ //если у одного id ответа 0, а у другого 2
result += formula[3];
}
}
$('b').text(result);
}
}