我在浏览器中使用了本地存储。但我只使用字符串作为键值对。有没有办法存储字符串列表(对于单个键)并读取它们?
例如说我必须在页面中显示我的朋友。如果我可以使用本地存储,我实际上不需要每次都查询数据库来显示朋友列表(我知道会有一些不稳定,这对我的应用程序来说是可以的)。有没有办法实现这个????
先感谢您 :)
我在浏览器中使用了本地存储。但我只使用字符串作为键值对。有没有办法存储字符串列表(对于单个键)并读取它们?
例如说我必须在页面中显示我的朋友。如果我可以使用本地存储,我实际上不需要每次都查询数据库来显示朋友列表(我知道会有一些不稳定,这对我的应用程序来说是可以的)。有没有办法实现这个????
先感谢您 :)
是的你可以。localStorage 只是存储字符串,因此您需要以易于解析的格式存储它。
字符串列表的最简单方法是将其存储为字符串化数组。
存储:
localStorage['mylist'] = JSON.stringify(['string1', 'string2']);
加载:
var mylist = JSON.parse(localStorage['mylist']);
添加更多和存储:
mylist.push('newstring');
localStorage['mylist'] = JSON.stringify(mylist);
您可以将其存储在 XML 文档中,也可以简单地使用 JSON 存储在任何文本文件中:http ://en.wikipedia.org/wiki/JSON
您可以将数组转换为 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);