我的问题是关于使用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",
}
嵌套数组:
nest1 = {
typ: "normal",
nestTime: 0,
frog1: "",
frog2: "",
currentbreed: false,
}