我如何在localStorage中存储和检索对象数组?

时间:2013-10-15 03:03:58

标签: javascript arrays html5 object

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

0 个答案:

没有答案