【问题标题】:localStorage and Javascript Object with arrays, save Issue带有数组的 localStorage 和 Javascript 对象,保存问题
【发布时间】:2012-04-05 03:31:17
【问题描述】:

我有以下组件:

patientDiseasesStorage = new Object()
patientDiseasesStorage['p158246547'] = [1, 3, 8, 2, 5] //and many more of this with different p-number

我现在尝试保存这个对象/数组组合

localStorage.setItem('patientDiseasesStorage', JSON.stringify(patientDiseasesStorage));

但是当我尝试从 localStorage 读回它时,它没有正确的值:

patientDiseasesStorage = JSON.parse(localStorage.getItem('patientDiseasesStorage'));
patientDiseasesStorage['p158246547'] is now undefined and not the array.

我做错了什么?

【问题讨论】:

  • p158246547 是否确实是一个变量,如果是,它在两种情况下是否具有相同的值?
  • 我有很多这样的 ID。我想存储这些 ID 的数组,然后再从具有相同 ID 的本地存储中取回数组
  • 但实际 ID 是否存储在名为 p158246547 的变量中?还是 ID 本身应该是 p158246547
  • id 是 p158246547。问题不在于对象中数组的存储和接收。问题是:将对象存储在本地存储中并接收回来后,我无法正确恢复它以接收我的数组。
  • 我更正了 id 值的引号

标签: javascript arrays local-storage javascript-objects


【解决方案1】:

如果p158246547 是一个字符串而不是变量名,它应该有引号:

patientDiseasesStorage['p158246547'] = [1, 3, 8, 2, 5] //and many more of this with different p-number

当您将其从 localStorage 中拉出时,也要使用引号。

【讨论】:

  • 对象中的存储和读取工作正常。只有当我从 localStorage 恢复对象时,它才不再工作
【解决方案2】:

你用的是什么浏览器?最新的 Chrome 适合我。

var a = [1, 2,3]
var obj = {'a': a}
obj.a
> [1, 2, 3]
localStorage.setItem('obj', JSON.stringify(obj))
var obj2 = JSON.parse(localStorage.getItem('obj'))
obj2.a
> [1, 2, 3]

【讨论】:

  • 当我使用语法 object.newname 为对象分配一个新值时,它会起作用。但是,当新值的名称存储在变量中时,如何将事物分配给对象?
  • @user1031990:我没有看到问题 - 如果我将其更改为使用 var obj = new Object(); obj['a'] = a,它仍然可以完全一样 - 我逐字复制并粘贴了您的代码,它运行良好......你能做一个 jsFiddle 来说明这个问题吗?
猜你喜欢
  • 2017-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
  • 2014-05-24
  • 2012-04-02
相关资源
最近更新 更多