如何将数组存储在localstorage中?


This question already has an answer here:

如果我不需要localStorage,我的代码将如下所示:

var names=new Array(); 
names[0]=prompt("New member name?");

这工作。但是,我需要将这个变量存储在localStorage中,并且证明它是相当固执的。我试过了:

var localStorage[names] = new Array();
localStorage.names[0] = prompt("New member name?");

我要去哪里?

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"));

localStoragesessionStorage只能处理字符串。您可以扩展默认存储对象来处理数组和对象。只要包含这个脚本并使用新的方法:

Storage.prototype.setObj = function(key, obj) {
    return this.setItem(key, JSON.stringify(obj))
}
Storage.prototype.getObj = function(key) {
    return JSON.parse(this.getItem(key))
}

使用localStorage.setObj(key,value)来保存一个数组或对象,使用localStorage.getObj(key)来检索它。相同的方法与sessionStorage对象一起工作。

如果您只是使用新方法来访问存储,那么每个值在被getter返回之前都会在保存和解析之前转换为JSON字符串。

来源: http://www.acetous.de/p/152

未经作者同意,本文严禁转载,违者必究!