2016-04-08 5 views
2

Ich habe ein Objekt, das ich in Quizfrage Ergebnisse bin Auszählung.Die höchsten Wert Schlüssel in einem Objekt, dann per Post an einem innerHTML-

var answerData = { 
    "Ninja": { score: 4 }, 
    "Robot": { score: 1 }, 
    "Pirate": { score: 7 }, 
    "Zombie": { score: 2 } 
} 

würde Ich mag, welches Attribut bestimmen, ist die höchste dann poste die Ergebnisse auf die Seite.

Ich habe einen Post hier auf Stackoverflow gefunden, der die Verwendung von object.reduce() vorgeschlagen hat, um ein Endergebnis zu erhalten. Ich kann nicht erreichen, dass der höchste Wert von "Pirat" zurückgegeben wird, stattdessen wird der letzte Wert von "Zombie" zurückgegeben.

function finalResults { 
     theAnswer = Object.keys(answerData).reduce(function(a, b){ return answerData[a] > answerData[b] ? a : b }); 

     document.getElementById("finalResulthere").innerHTML = "<p>Congratulations you are a " + theAnswer +".</p>"; 
} 

Um dann Post an

<div id="results"> 
    <div id="finalResulthere"></div> 
</div> 

Meine alternativen Gedanken waren angekettet laufen, wenn Aussagen, die die Werte von jedem des Objektschlüssels zu vergleichen. Dies schien besser zu sein ...

Antwort

5

Ihre Funktion ist fast abgeschlossen, Sie verpassen nur ein Detail, Sie vergleichen das komplette Objekt und es immer scheitern.

function finalResults() { 
    var theAnswer = Object.keys(answerData). 
       reduce(function(a, b){ 
        return answerData[a].score > answerData[b].score ? a : b } 
       ); 

    document.getElementById("finalResulthere").innerHTML = "<p>Congratulations you are a " + theAnswer +".</p>"; 
} 

Sie den Wert der Eigenschaft score vergleichen müssen verwenden, das ist, was Sie vermissen

+0

Die kompletten Sinn macht. Vielen Dank! – Funkexchange

Verwandte Themen