如何在localStorage(Javascript)中存储带有数组的JSON?
我正在为我的项目开发一个HTML5游戏,我的问题在于评分系统。
我想显示前十名最佳得分手(已经排序)。我目前正在使用JSON中的Array。
I am developing a game in HTML5 for my project, my problem is in the scoring system.
I want to display the top ten best scorers (already sorted). I am currently working with Array in a JSON.
现在我想在localStorage中保存JSON数组
Now I want to save JSON Array in localStorage
var storage = '{"Players":[' +
'{"score":"0","Name":"Player 2"},' +
'{"score":"0","Name":"Player 4"},' +
'{"score":"0","Name":"Player 1"}]}';
var obj = JSON.parse(storage);
obj['Players'].push({"score": 13,"Name": "Player1"});
obj['Players'].push({"score": 523,"Name": "Player2"});
obj['Players'].push({"score": 3,"Name": "Player3"});
obj['Players'].push({"score": 1235,"Name": "Player4"});
storage = JSON.stringify(obj);
var sortColumnScore = "score";
function SortByScore(x,y) {
return ((x[sortColumnScore] == y[sortColumnScore]) ? 0 : ((x[sortColumnScore] < y[sortColumnScore]) ? 1 : -1 ));
}
obj.Players.sort(SortByScore);
for (var i = 0; i < 5; i++) {
document.getElementById("s"+ (i+1)).innerHTML =
obj.Players[i].score;
document.getElementById("p"+ (i+1)).innerHTML =
obj.Players[i].Name;
};
基本上你应该像使用localstorage一样使用localstorage 存储
以上。您可以像对待@Magus一样以对象的方式使用localstorage,或者以关联数组的方式使用localstorage,调用它的原语 getItem
, setItem
。
Basically you should use localstorage just like you are doing with storage
above. You can use localstorage in the object way as is doing @Magus or in the associative-array way, calling its primitives getItem
, setItem
.
简单用法:
var storage = '{"Players":[' +
'{"score":"0","Name":"Player 2"},' +
'{"score":"0","Name":"Player 4"},' +
'{"score":"0","Name":"Player 1"}]}';
var obj = JSON.parse(storage);
obj['Players'].push({"score": 13,"Name": "Player1"});
obj['Players'].push({"score": 523,"Name": "Player2"});
obj['Players'].push({"score": 3,"Name": "Player3"});
obj['Players'].push({"score": 1235,"Name": "Player4"});
localStorage.setItem('Players', JSON.stringify(obj));
然后从localStorage调用数据:
Then get data from localStorage calling:
var myobj = JSON.parse(localStorage.getItem('Players'));
高级用法:
为正确使用(加上当前用户会话)和localstorage / sessionstorage的初始化(根据您的目标),请参阅此问题后@ War10ck的评论将JSON对象推送到localStorage中的数组。
For correct usage (coupled with the current user session) and initialization of localstorage/sessionstorage (according to your goal) see the comment of @War10ck following this issue Push JSON Objects to array in localStorage.