本地存储覆盖问题

local storage Overwriting issue

本文关键字:问题 存储覆盖      更新时间:2023-09-26

我一直在测试应用程序,我只允许使用javaScript。该应用程序的工作原理就像我要求用户选择用户名,我保存在变量中,他/她开始回答,分数越来越高,被保存在分数变量中。之后,一旦游戏结束,我就会打印信息,并必须呈现5个得分最高的用户。为此目的,我使用本地存储,问题是当我保存数据时,它工作正常,但当我重新启动或再次播放数据时,数据正在被覆盖。例如,第一个用户名被替换为新玩家。我保存数据的代码是;

      var obj = convertUserAndScore(user, score);
      var players = new Array;
      players.sort(function(a, b){
        return a.score - b.score;
      });

      players.push(JSON.stringify(obj));
      localStorage.setItem("players", players);

      function convertUserAndScore(user, score) {
         return { "usename": user , "score": score};
      }

几个问题

首先你总是初始化一个空数组…并且永远不会从localStorage

中获取存储的数据

接下来,将该空数组立即存储在localStorage中。当你实际存储长度为

的数组时,这肯定会覆盖其他情况

第三,当你需要字符串化整个数组

时,你正在字符串化数组中的元素

让我们从页面加载开始:

var localData = localStorage.getItem("players");
// if defined then parse stored data or use empty array
var players = localData ? JSON.parse(localData ) : [];

当你改变数组的时候你需要对整个数组进行字符串化

var somObj= //...
players.push(somObj);
localStorage.setItem("players", JSON.stringify(players));