javascript - 本地存储中的高分 - Javascript

标签 javascript arrays json for-loop local-storage

我正在用 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/

相关文章:

javascript - 搜索栏 vue.js

java - 在 Java 中使用字符串和整数对 ArrayList 进行排序

php - array_diff 没有按预期工作?可能是什么原因?

json - postgresql,选择多个 jsonb_array_elements 工作很奇怪

php - 通过 json_encode() 传递 PHP 字符串(代表 JS 函数)

json - Jenkins/groovy : How to pretty-print a net. sf.json.JSONObject 为空?

javascript - 像在 digital ocean 中一样选择按钮

php - 如何在数据库中插入正确的值

javascript - 为函数调用转义变量?

java - 替换二维数组中的行和列