2017-12-17 22 views
1

私はjavascriptでゲームを作成しており、最高スコアの5つのスコアをハイスコアテーブルに表示したいと考えています。終了画面に到達すると、最新の/最高のスコアが表示されます。私は間違って何をしていますか?ローカルストレージのハイスコア - Javascript

let result = {userName: user, score: timeScore} 

let highscore = [] 

highscore.push(result) 

highscore.sort(function (a, b) { 
return (a.timeScore - b.timeScore) 
}) 

let hsTable = document.getElementById('highscores') 

window.localStorage.setItem('highscore', JSON.stringify(highscore)) 

let retrievedScores = JSON.parse(window.localStorage.getItem('highscore')) 


for (let i = 0; i < 5; i++) { 
    hsTable.innerHTML += '<tr><td>' + retrievedScores[i].userName + '</td><td>' + retrievedScores[i].score + '</td></tr>' 
    } 
+1

あなたのソート機能であるかもしれません:フィールドはscoreScoreではなくscoreと呼ばれます。 'highscore.sort(function(a、b){ return(a.score-b.score) })' – Oliver

+0

何か不足していますか、配列highscoreにレコードを1つだけ追加していますか? –

答えて

2

他のすべてのスコアよりも最新のスコアを保存します。

const result = {userName: user, score: timeScore} 

const savedScores = localStorage.getItem('highscore') || '[]' // get the score, or the initial value if empty 

const highscores = [...JSON.parse(savedScores), result] // add the result 
    .sort((a, b) => b.score- a.score) // sort descending 
    .slice(0, 5) // take highest 5 

localStorage.setItem('highscore', JSON.stringify(highscores)) // store the scores 
関連する問題