![]() |
1
2902
看看 Apple , Mozilla 和 Microsoft 文档,功能似乎仅限于处理字符串键/值对。 解决方法可以是 stringify 在存储对象之前对其进行分析,然后在检索对象时对其进行分析:
|
![]() |
2
592
A的微小改进 variant :
因为
short-circuit evaluation
,
|
![]() |
3
206
您可能会发现使用以下方便的方法扩展存储对象很有用:
这样,即使在API下面只支持字符串,也可以获得真正想要的功能。 |
![]() |
4
68
扩展存储对象是一个很棒的解决方案。对于我的API,我已经为本地存储创建了一个外观,然后在设置和获取时检查它是否是一个对象。
|
![]() |
5
59
串化并不能解决所有问题这里的答案似乎并没有涵盖在javascript中可能出现的所有类型,因此下面是一些关于如何正确处理它们的简短示例:
我不推荐
存储函数是因为
私人成员
使用的问题
循环引用
另一个问题
在这个例子中,
然而,找到一个有效的存储循环引用的解决方案高度依赖于需要解决的任务,并且恢复这些数据也不是一件容易的事情。 在处理这个问题上已经存在一些问题: Stringify (convert to JSON) a JavaScript object with circular reference |
![]() |
6
52
有一个很棒的库,它包含了许多解决方案,因此它甚至支持称为 jStorage 可以设置对象
很容易找到它
|
![]() |
7
33
将JSON对象用于本地存储: //集
//获取
//所有本地存储键和值的迭代
//删除
|
![]() |
8
27
理论上,可以使用以下函数存储对象:
但是,函数序列化/反序列化不可靠,因为 it is implementation-dependent . |
![]() |
9
22
您还可以覆盖默认存储
我没有广泛地测试过这个,但是对于一个我一直在修补的小项目来说,它似乎没有问题。
|
![]() |
10
21
我是在点击了另一个已经被关闭的帖子之后到达这篇帖子的——标题是“如何在本地存储中存储数组?”. 因此,如果其他人希望能够在数组中推/弹出/移动项,并且他们希望该数组存储在本地存储中,或者实际上是会话存储中,那么您可以这样做:
示例用法-在本地存储阵列中存储简单字符串:
示例用法-在sessionstorage数组中存储对象:
操作数组的常用方法:
|
![]() |
11
13
建议对这里讨论的许多特性以及更好的兼容性使用抽象库。有很多选择:
|
![]() |
12
10
更好的方法是使函数作为setter和getter 本地存储 通过这种方式,您将拥有更好的控制,并且不必重复JSON解析和所有操作。 它甚至可以处理你的 (“”) 顺利清空字符串键/数据大小写。
|
![]() |
13
8
我稍微修改了一个最受欢迎的答案。如果不需要的话,我喜欢用单一功能代替2。
另外,如果没有设置任何值,则返回
|
![]() |
14
6
@guria答案的改进:
|
![]() |
15
5
你可以用 localDataStorage 透明地存储javascript数据类型(数组、布尔值、日期、浮点、整数、字符串和对象)。它还提供了轻量级的数据混淆、自动压缩字符串、方便按键(名称)查询以及按(键)值查询,并有助于通过前缀键在同一域中实施分段共享存储。 [免责声明]我是实用程序的作者[免责声明] 示例:
如您所见,基本值是受尊重的。 |
![]() |
16
4
另一个选择是使用现有的插件。 例如 persisto 是一个开放源代码项目,它为本地存储/会话存储提供了一个简单的接口,并自动实现表单字段(输入、单选按钮和复选框)的持久性。
(免责声明:我是作者。) |
![]() |
17
4
你可以用 ejson 将对象存储为字符串。
这是我使用ejson的本地存储包装 https://github.com/UziTech/storage.js 我在包装器中添加了一些类型,包括正则表达式和函数 |
![]() |
18
3
http://rhaboo.org 是一个本地存储糖层,允许您编写如下内容:
它不使用json.stringify/parse,因为这在大型对象上是不准确和缓慢的。相反,每个终端值都有自己的localstorage条目。 你可能会猜到我可能和Rhaboo有关;-) 阿德里安。 |
![]() |
19
3
我用20行代码做了另一个极简的包装,允许像应该的那样使用它:
|
![]() |
20
2
对于愿意设置和获取类型化属性的typescript用户:
|
![]() |
21
1
这里是@danott发布的代码的扩展版本 它还将实现 删除 本地存储的值 并演示如何添加getter和setter层,
你可以写
好了,我们开始了:
你可以把别名部分去掉
|
![]() |
22
1
我做了一件事情,它不会破坏现有的存储对象,而是创建一个包装器,这样您就可以做您想做的事情。结果是一个普通的对象,没有方法,像任何对象一样具有访问权限。
如果你想要1
如果您需要几个:
你所做的一切
每一个新的目标 里面 跟踪的对象将被自动跟踪。
最大的缺点是:
这取决于
|
![]() |
23
1
假设您有以下称为电影的数组:
使用stringify函数,可以使用以下语法将movies数组转换为字符串:
请注意,我的数据存储在一个名为quentinarantino的键下。 正在检索数据
要从字符串转换回对象,请使用json parse函数:
可以调用电影中的所有数组方法2 |
![]() |
24
1
要存储一个对象,您可以制作一个字母,用于将对象从字符串获取到对象(可能没有意义)。例如
如果你使用你用来分割物体的字母,这项技术会导致一些小故障,而且它也是非常实验性的。 |
![]() |
25
1
使用localstorage跟踪从联系人收到的消息的库的一个小示例:
|
![]() |
26
-8
通过本地存储循环
|
![]() |
StephenW · 如何在本地存储中更新时间戳? 2 年前 |
![]() |
Raj Lama · 无法解析自定义路径目录以保存捕获的图像 7 年前 |
![]() |
cnak2 · 无法分析localstorage angular 2 7 年前 |
![]() |
rob.m · 如何在单击时增加本地存储中的数字? 7 年前 |
![]() |
stack · 如何存储的结果。是否将each()放入本地存储? 7 年前 |