为什么关联数组在localStorage [“”]中不起作用?

时间:2011-03-07 15:21:23

标签: javascript arrays html5 google-chrome associative-array

例如,我有以下代码:

  localStorage["screenshots"] = new Array();
  localStorage["screenshots"]["a"] = 9;
  alert(localStorage["screenshots"]["a"]);

  Arr = new Array();
  Arr["screenshots"] = new Array();
  Arr["screenshots"]["a"] = 9;
  alert(Arr["screenshots"]["a"]);

(我在Windows Vista 32位上使用Google Chrome v9.0.597.107)

但只有第二部分有效(alert()的输出是“a”)! 相反,第一个警报输出“未定义”!

有什么问题?

感谢。

3 个答案:

答案 0 :(得分:16)

localStorage将值存储为字符串,因此您需要在路上序列化对象并在出路时对其进行反序列化。例如:

var data = {'A': 9};

localStorage['screenshots'] = JSON.stringify(data);

// Later/elsewhere:

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

// 9
console.log(data.A);

答案 1 :(得分:2)

localStorage对象只能存储字符串。要存储其他类型的数据,请使用它们将它们转换为字符串,并在检索时将其转换回来。在大多数情况下,您可能希望使用JSON来执行此操作。

答案 2 :(得分:1)

本地存储存储字符串键和字符串值。

  

DOM存储机制是一种可以安全地存储字符串键/值对并随后检索使用的方法。

来源:MDC