在本地存储中创建多维数组时出现问题

Problems create multidimensional array in localstorage

本文关键字:数组 问题 存储 创建      更新时间:2023-09-26

我正在尝试在本地存储中保存一些数据。我的脚本如下:

    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,它可以很好地工作。

最重要的是细节。localStorage只存储字符串。将对象编码为JSON,然后使用例如JSON.stringify()JSON.parse()将它们存放在那里。

这是因为localStorage不是对象;这是一个接口。您只能将字符串分配给它,最好的方法是使用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"}