本地存储覆盖问题
local storage Overwriting issue
我一直在测试应用程序,我只允许使用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));
相关文章:
- 在firebase(web)上存储数据时出现问题
- 用JSON覆盖本地存储
- 性能问题:存储对DOM元素的引用与使用选择器相比
- 循环POS={{k}}k的iMacros没有持有整数值/存储问题
- 安卓phonegap应用程序与三星Galaxy设备上的SQlite和本地存储存在问题
- j查询验证器功能覆盖问题
- 关于覆盖本机DOM方法时的IE 10问题
- 具有多个浏览器选项卡/窗口的骨干网.js和本地存储覆盖数据
- 覆盖在“背景大小:包含”上的响应式 DIV - 解决警报触发的问题
- Jquery 显示/隐藏常见问题解答,文本被覆盖
- 关于确定数组中存储的最大值的不同方法的一些问题(加上输出消息问题)
- HTML5 本地存储 - 多个删除项问题
- 在 IE7 中模拟本地存储时出现问题
- 将整个字符串存储为数据属性时出现问题
- 日期选取器存储错误值的问题
- 角度 Restangular 本地存储拦截器问题
- 全局变量 VS Web 应用中的本地存储和内存问题
- ExtJS4 组合框加载/存储问题
- node.js中的继承问题:试图覆盖子类的原型时出现赋值错误
- 本地存储覆盖问题