问题在localstorage中创建多维数组

时间:2013-09-05 14:09:27

标签: javascript html5 multidimensional-array local-storage

我试图在localstorage中保存一些数据。我的脚本看起来像这样:

    localStorage.clear(); //only for testing

    if(typeof localStorage.akten == "undefined") {
        localStorage.akten = new Array();
    }

    var nam = "alpha";


    localStorage.akten[nam] = {
        "beta": 12
    };

    localStorage["a_akte"] = nam;

但如果我console.log(localStorage);console.log(localStorage.akten); akten只是一个空字符串?为什么?使用普通对象而不是localStorage可以很好地工作。

2 个答案:

答案 0 :(得分:4)

这是因为localStorage不是对象;这是一个界面。您只能为其分配 String ,最好的方法是使用localStorage.setItem。如果您想设置更复杂的数据,则需要先将其编码为JSON

function localStore(key, obj) {
    return window.localStorage.setItem(key, JSON.stringify(obj));
}

function localGet(key) {
    return JSON.parse(window.localStorage.getItem(key));
}

localStore('foo', {bar: 'baz'});
localGet('foo'); // Object {bar: "baz"}

答案 1 :(得分:3)

令人惊讶的是魔鬼在细节中。 localStorage仅存储字符串。使用例如JSON.stringify()JSON.parse()将对象存放到那里之前,将对象编码为JSON。