Dav*_*vid 585 html javascript arrays html5 local-storage
如果我不需要localStorage,我的代码将如下所示:
var names=new Array();
names[0]=prompt("New member name?");
Run Code Online (Sandbox Code Playgroud)
这有效.但是,我需要将这个变量存储在localStorage中,并且证明它非常顽固.我试过了:
var localStorage[names] = new Array();
localStorage.names[0] = prompt("New member name?");
Run Code Online (Sandbox Code Playgroud)
我哪里错了?
Dag*_*bit 1085
localStorage只支持字符串.使用JSON.stringify()和JSON.parse().
var names = [];
names[0] = prompt("New member name?");
localStorage.setItem("names", JSON.stringify(names));
//...
var storedNames = JSON.parse(localStorage.getItem("names"));
Run Code Online (Sandbox Code Playgroud)
小智 110
该localStorage和sessionStorage只能处理字符串.您可以扩展默认存储对象以处理数组和对象.只需包含此脚本并使用新方法:
Storage.prototype.setObj = function(key, obj) {
return this.setItem(key, JSON.stringify(obj))
}
Storage.prototype.getObj = function(key) {
return JSON.parse(this.getItem(key))
}
Run Code Online (Sandbox Code Playgroud)
使用localStorage.setObj(key, value)保存一个数组或对象,并localStorage.getObj(key)对其进行检索.相同的方法适用于该sessionStorage对象.
如果您只是使用新方法来访问存储,则在保存和解析之前,每个值都将转换为JSON字符串,然后由getter返回.
资料来源:http://www.acetous.de/p/152
jay*_*eff 17
使用JSON.stringify()和JSON.parse()没有建议!这可以防止包含分隔符(例如成员名称three|||bars)的成员名称的罕见但可能的问题.
小智 6
刚刚创建了这个:
https://gist.github.com/3854049
//Setter
Storage.setObj('users.albums.sexPistols',"blah");
Storage.setObj('users.albums.sexPistols',{ sid : "My Way", nancy : "Bitch" });
Storage.setObj('users.albums.sexPistols.sid',"Other songs");
//Getters
Storage.getObj('users');
Storage.getObj('users.albums');
Storage.getObj('users.albums.sexPistols');
Storage.getObj('users.albums.sexPistols.sid');
Storage.getObj('users.albums.sexPistols.nancy');
Run Code Online (Sandbox Code Playgroud)