【问题标题】:access elements of a list in local storage访问本地存储中列表的元素
【发布时间】:2013-06-11 22:22:47
【问题描述】:

有一个这样的列表:

 var names_Array = [];

 var names_List = new WinJS.Binding.List(names_Array);

我将以下内容推入列表:

names_List.push({ name: "Joe Dowling", image: "image/Joe Dowling.png", ClientID: "1234" });
names_List.push({ name: "Esteban Flamenco ", image: "image/Esteban Flamenco.png", ClientID: "6666" });

然后我将列表设置在本地存储中,如下所示:

window.localStorage.setItem('names_List', names_List);

最后我得到了这样的项目:

  var test = window.localStorage.getItem('names_List');
  console.log(test);

我希望能够在控制台中打印列表元素。任何人都可以指导我。我尝试使用 names_List.getAt(index) 方法,但无济于事。

【问题讨论】:

标签: javascript arrays json list local-storage


【解决方案1】:

你几乎肯定会在这里弄得一团糟,因为localStorage 只会存储字符串。任何其他类型的对象都将转换为字符串。所以你可能会得到类似[object Object],[object Object],[object Object],[object Object] 的东西,这是将对象数组转换为字符串的结果。

解决这个问题的最佳方法是使用 JSON。

window.localStorage.setItem('names_List', JSON.stringify(names_List));
var test = JSON.parse(window.localStorage.getItem('names_List'));

这以更有意义的方式将对象转换为字符串,因此您将保留您的结构。

【讨论】:

  • 尝试过您的代码后,我收到此错误:“不支持值参数中的循环引用”。我被告知它与:window.localStorage.setItem('names_List', JSON.stringify(names_List));
  • 这意味着您的列表包含对自身的引用或具有对自身的引用的对象(DOM 节点?)并且不能转换为 JSON。除非你消除自我参照,否则你永远无法做到这一点。
  • @Nathan Bubna 我不明白我的列表如何包含对自身的引用。你能解释一下吗?
  • @user2363025 对象可以包含对自身的引用。例如,var object = {}; object.property = object; 不可能在 JSON 中序列化该关系,因此会导致错误。显然,您的数据中某处有类似的东西。没有看到数据,就无法准确说出问题所在。
猜你喜欢
  • 1970-01-01
  • 2020-11-23
  • 2020-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-31
相关资源
最近更新 更多