localStorage对象数组处理

时间:2012-12-04 11:42:10

标签: javascript arrays html5 object local-storage

JSON对象数组存储在HTML5 localStorage中 目前,分隔符是 ;
用于访问和修改所使用的localStoragesplit(';')join(';')操作的对象数组。

但是,分隔符方法看起来不稳定 例如,在对象属性中可以满足 ; ,并且split(';')操作将是不正确的。

可以使用 ;; 作为分隔符,但我不确定它是否也会稳定。

是否有任何可靠的方法来处理作为对象数组呈现的localStorage,到目前为止localStorage保存为String

修改

其中一个限制因素是无法将对象数组保存为localStorage:"[{},{}]"
localStorage会自动将其转换为"{},{}"

之类的字符串

localStorage中的当前数据:

"{"name":"volvo","id":"033"};{"name":"saab","id":"034"}"

假设
或许,我可以在开头添加[,在结尾添加],但它看起来不是优雅的

3 个答案:

答案 0 :(得分:38)

只需将对象转换为JSON字符串:

localStorage.setItem("savedData", JSON.stringify(objects));

反之亦然:

objects = JSON.parse(localStorage.getItem("savedData")));

或者您可以在同一localStorage值中添加多个对象:

localStorage.setItem("savedData", JSON.stringify([object1, object2 /*, etc*/]));
object1 = JSON.parse(localStorage.getItem("savedData"))[0];
object2 = JSON.parse(localStorage.getItem("savedData"))[1];

Here's the DOM storage specification

你也可以像这样访问savedData

localStorage.savedData = "Hello world"
var foo = localStorage.savedData;

这可以用于获取和设置数据,但它被认为不如getItem('name');setItem('name', 'value');

“安全”

答案 1 :(得分:0)

读取变量:

var xyz = JSON.parse( localStorage.getItem( 'element' ) );

存储变量:

localStorage.setItem( 'element' , JSON.stringify(xyz));

其中element是本地存储变量的名称,xyz是js变量的名称。

答案 2 :(得分:0)

如果数组不是太大,你可以使用parse和stringify,但如果是,那么你将为每一个小变化重新编码整个数据集。

http://rhaboo.org上的库通过在链表中为每个数组条目提供自己的localStorage条目来改进它。这意味着您可以非常有效地进行更改。与JSON不同,它还支持文本命名属性和三种不同类型的稀疏条目(null,undefined,而不是那里。)

BTW,我写了rhaboo。