0

我的问题是关于使用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,
}
4

0 回答 0