【问题标题】:Storing arrays in localstorage在本地存储中存储数组
【发布时间】:2014-05-10 08:58:52
【问题描述】:

我正在使用 Appery.io 构建一个应用程序。它基本上是一个返回结果的搜索应用程序,然后您可以单击结果查看详细信息。

结果以 JSON 格式从 REST api 返回,每个结果中都有许多不同的项目,其中一个是 JSON 数组,其中包含多组三个名称/值对。

我需要与每个结果关联的数组在该结果的详细信息页面中可用。我不想简单地在详细信息页面中再次运行搜索,因为这是一个相对冗长的过程并且会减慢整个应用程序的速度。

我知道使用JSON.stringify() 使数组成为字符串,然后将每个数组存储在本地存储中。但是,当我在 Appery.io 中这样做时,似乎我要么 a) 只保存数组的第一个结果,要么 b) 做错了。

任何人都可以提供有关我如何进行此操作的任何见解吗?很高兴提供代码,澄清我的问题等。

谢谢!

【问题讨论】:

  • 所以你有一个 JSON 字符串,你想存储在客户端以便稍后检索另一个页面?
  • 显示一些代码来看看你是怎么做的,所以我们可以说它是错的还是什么。
  • 我可能错了,但你为什么不尝试将它存储在 window.name 属性中。这是dreamerslab.com/blog/en/javascript-session的一个很好的链接@
  • localStorage 本质上是一个对象,一个键:值存储。它甚至可以写成localStorage[key] = value; 。所以从某种意义上说,如果代码继续使用相同的键,它只能保持以前的值。为了存储多个值,必须改变键。 localStorage 不关心字符串值是代表 JSON 还是其他东西,但有大小限制。 localStorage 也不关心值字符串是否经过 LZ 压缩。见pieroxy.net/blog/pages/lz-string/index.html

标签: javascript arrays html jquery-mobile local-storage


【解决方案1】:

如果在 Appery.io 中使用 JSON.stringify() 时出现问题,请尝试将它们存储为逗号分隔字符串的方法(除非值中有逗号):

> ["foo", "bar"].join();
>> "foo,bar"

他们还给他们:

> "foo,bar".split(",");
>> ["foo, "bar"]

当然,如果值中有逗号,则可以为值使用明确指定的分隔符,例如:

> ["foo,bar", "foz,baz"].join("#");
>> "foo,bar#foz,baz"

【讨论】:

  • JSON.stringify() 适用于标准对象、数组、字符串、数字。日期,不是那么多,它将它们转换为字符串并且解析不会用Date() 重构它们。自定义对象,JSON.stringify() 可能会在自定义对象上查找 .toJSON().toString(),但 JSON.parse() 不会重构。
猜你喜欢
  • 2015-12-23
  • 1970-01-01
  • 2018-07-13
  • 1970-01-01
  • 2020-03-16
  • 1970-01-01
  • 2014-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多