1

我在浏览器中使用了本地存储。但我只使用字符串作为键值对。有没有办法存储字符串列表(对于单个键)并读取它们?

例如说我必须在页面中显示我的朋友。如果我可以使用本地存储,我实际上不需要每次都查询数据库来显示朋友列表(我知道会有一些不稳定,这对我的应用程序来说是可以的)。有没有办法实现这个????

先感谢您 :)

4

3 回答 3

7

是的你可以。localStorage 只是存储字符串,因此您需要以易于解析的格式存储它。

字符串列表的最简单方法是将其存储为字符串化数组。

存储:

localStorage['mylist'] = JSON.stringify(['string1', 'string2']);

加载:

var mylist = JSON.parse(localStorage['mylist']);

添加更多和存储:

mylist.push('newstring');
localStorage['mylist'] = JSON.stringify(mylist);
于 2013-08-19T17:31:13.017 回答
0

您可以将其存储在 XML 文档中,也可以简单地使用 JSON 存储在任何文本文件中:http ://en.wikipedia.org/wiki/JSON

于 2013-08-19T17:29:43.960 回答
0

您可以将数组转换为 JSON。那是一种选择。您转换然后存储为字符串,然后将其读回并转换回来。

为此,我使用了以下几个函数,它们的调用方式如下:

jsonStore.putJson("friendInfo", frientInfo); // friendInfo is an object or array

var readFriendInfo = jsonStore.getJson("friendInfo");

var jsonStore = function () {
    return {
        getJson: function(key) {
            var ret = localStorage[key];
            if (ret) {
                try {
                    ret = JSON.parse(ret); // use JSON3 to handle multiple browsers/versions
                } catch (e) {
                    ret = undefined; // for parse failure
                }
            }
            return ret;
        },
        putJson: function(key, value) {
            localStorage[key] = JSON.stringify(value); // use JSON3 for this too
        }
    };
}();

你可以做这样的事情,假设关于每个朋友的字符串在一个数组元素中,friendInfo每个索引表示一个不同的朋友。

for (var i=0; i < friendInfo.length ; ++i) {
    localStorage.setItem("friend" + i, firentInfo[i]);
}

当我这样做时,我通常存储另一个项目,告诉有多少:

localStorage.setItem("friend.length", friendInfo.length);
于 2013-08-19T17:30:57.613 回答