我正在用 javascript 创建一个游戏,并希望在高分表中显示 5 个最佳分数。当我到达结束屏幕时,我只会看到最新/最好的分数。我究竟做错了什么?
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>'
}
最佳答案
您保存的是最新分数,而不是所有其他分数。获取旧分,排序,取前5个最高分,存入:
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
关于javascript - 本地存储中的高分 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47858518/