2016-07-27 12 views
0

Ich schrieb ein Javascript-Quiz für meine Rails-App, in der es eine Auswahl zwischen nur zwei Antworten für jede Frage gab, ich versuche jetzt, es zu skalieren, so dass es vier Fragen und vier Ergebnisse gibt Seiten, aber es war nicht in der Lage, es soweit zu arbeiten. Kann jemand helfen? Ich habe versucht, die var-Berechnungen zu ändern, war aber bisher nicht erfolgreich.Javascript Quiz Ergebnis Berechnung/Generation

function generateResult(answers) { 
    var panda = bear = 0; 
    for(var i =0; i < answers.length; i++){ 
    if(answers[i] == 1){ 
     bear++; 
    } 
    else { 
     panda++; 
    } 
    } 
    if(bear > panda) { 
     return "sbear.html"; 
    } 
    else if(bear > elephant) { 
     return "sbear.html"; 
     } 
    else if(bear > alpacha) { 
     return "sbear.html"; 
     } 

    else if(panda > bear) { 
     return "sbear.html"; 
    } 
    else if(panda > elephant) { 
     return "sbear.html"; 
     } 
    else if(panda > alpacha) { 
     return "rpanda.html"; 
     } 

    else if(alpacha > bear) { 
     return "sbear.html"; 
    } 
    else if(alpacha > panda) { 
     return "sbear.html"; 
     } 
    else if(alpacha > elephant) { 
     return "alpach.html"; 
     } 

    else { 
     return "eleph.html"; 
    } 
} 
+0

Können Sie bitte die Initialisierung von 'Elefant' und' Alpacha' (Alpaka?) teilen? – Hodrobond

+0

Ich habe es zur Zeit nicht mehr, was ich vorher dafür hatte funktioniert nicht und ich bin mir nicht sicher, wie es weitergeht – Djangert

+0

@Djangert Nun, dann müssen Sie sie definieren. Sie können nicht erwarten, dass Code mit nicht deklarierten Variablen funktioniert. –

Antwort

0

Ich bin nicht sicher, das sind die richtigen Werte des Bären/Panda/Elefant/Alpac (h) ein, aber Sie können die in ziemlich einfach tauschen.

function generateResult(answers) { 
    // initialize ALL variables 
    var panda = bear = elephant = alpacha = 0; 
    for(var i =0; i < answers.length; i++){ 
     if(answers[i] == 1){ // assuming bear == 1 
     bear++; 
     } 
     else if(answers[i] == 2) { // assuming panda == 2 
     panda++; 
     } 
     else if(answers[i] == 3) { // assuming elephant == 3 
     elephant++; 
     } 
     else { // assuming alpacha == 4 
     alpacha++; 
     } 
    } 
    if (bear > alpacha && bear > panda && bear > elephant) { 
     return "sbear.html"; 
    } 
    else if (alpacha > bear && alpacha > panda && alpacha > elephant) { 
     return "alpach.html"; 
    } 
    else if (panda > alpacha && panda > bear && panda > elephant) { 
     return "rpanda.html"; 
    } 
    else { 
     return "eleph.html"; 
    } 
} 
1

Hier ist eine andere Antwort. Ich arbeitete für meine vermeintliche Liste von Antworten

var answers = [1,2,3,4,2,2,2,3,4] 
function generateResult(answers) { 
    var animals = { 
     1: 'bear', 
     2: 'panda', 
     3: 'elephant', 
     4: 'alpacha' 
    } 

    var counts = [0,0,0,0]; 

    answers.forEach(function(answer){ 
     counts[answer-1]++; 
    }); 

    return animals[counts.indexOf(Math.max(...counts))+1] + '.html'; 
} 

Ergebnis:

genarateResult (Antworten); // 'panda.html'