我的问题是关于将localStorage
用于网页。我一直在使用JavaScript制作一个游戏,因为这是一个非常漫长的游戏,一个问题是,标签经常被意外关闭或计算机在完成之前关闭。因此,我希望能够制定出某种简单的游戏保存程序,以便这些事件不会导致整个游戏重置。
我需要存储的数据包含三个数组和一个原始值。当用户开始玩游戏时创建这些中的每一个,并且当玩游戏时,将对象添加到数组中,并且原始值 - 整数 - 递增。整数值应该不难,但数组由对象组成,而不是原始值,因此JSON.stringify
只能将"[object Object, object Object, object Object (...)]"
作为字符串返回。
我已经尝试迭代数组并单独对每个对象进行字符串化,但这似乎有点令人费解,我不能完全考虑它,而且,我似乎做错了什么而且它没有不管怎样。
这是迄今为止该计划的相关部分,如果有人想看到任何原因:
var frogarray = [parent1, parent2, parent3, parent4]
var nestarray = [nest1]
var genesisarray = [];
pushGenesis( new Genesis() );
var boondollars = 0;
function getProgress () {
var frogdata = localStorage.getItem("frogs");
var nestdata = localStorage.getItem("nests");
var boondata = localStorage.getItem("boondollars");
var genesisdata = localStorage.getItem("genesis");
frogarray = JSON.parse( frogdata );
nestarray = JSON.parse( nestdata );
genesisarray = JSON.parse( genesisdata );
boondollars = boondata;
frogtoUI();
nesttoUI();
printboons();
}
function saveProgress() {
var storagefrog = [];
var storagenest = [];
var storagegenesis = [];
function stringifying ( array, name, storagearray ) {
for ( i = 0; i < array.length; i++ ) {
var s = JSON.stringify( array[i] );
storagearray.push(s);
localStorage.setItem(name, JSON.stringify(storagearray));
}
}
stringifying(frogarray, "frogs", storagefrog)
stringifying(nestarray, "nests", storagenest)
stringifying(genesisarray, "genesis", storagegenesis)
localStorage.setItem("boondollars", boondollars)
}
有没有办法可以正确地检索和存储localStorage
中的对象数组 - 如果可能的话更简单或更简洁?
编辑:
以下是每个数组中对象的示例:
frogarray或genesisarray:
parent1 = {
gender: "female",
colour: "red",
eyecolour: "blue",
pattern: "plain",
sized: "small",
}
nestarray:
nest1 = {
typ: "normal",
nestTime: 0,
frog1: "",
frog2: "",
currentbreed: false,
}