如何存储和更新具有不同数据类型属性的 localStorage 键对象?

2024-03-19

这是我第一次使用localStorage我想存储一个localStoragekey 是一个具有不同数据类型属性的对象,例如 key "localstor“,它是一个包含两个属性的对象:

localstor= { userMsg : String , userInfo : (Object) { ID: String , username: String , pwd :String } }

该财产userMsg属于类型String而财产userInfo属于类型object.

我知道如何设置和获取仅包含基于对象的项目这个问题 https://stackoverflow.com/questions/13702100/localstorage-array-of-objects-handling,但就我而言,我不知道如何设置和获取这种密钥?特别是如果我想更新 localstor 中的对象 userInfo 该怎么做?

任何帮助表示赞赏。


我不知道我是否理解你的问题,如果我理解了,请告诉我,以便我纠正我的答案,但我认为你想要做的是操纵你保存在缓存中的项目localStorage,例如,该数据是一个包含多种类型数据的对象。

假设你有你的对象localstor(我添加了一些选项卡,以便更容易查看和调试);

var localstor = {
  userMsg : "Message",
  userInfo :{
              ID: "SomeID",
              username: "SomeUsername",
              pwd : "SomePassword"
            }
}

将其放入 localStorage 非常简单(正如您所指出的,您已经知道该怎么做),因此您只需要选择一个密钥。在这里,我选择“obj”作为键:

localStorage.setItem("obj", JSON.stringify(localstor));

正如您可能已经注意到的,我使用了一个函数JSON.stringify()。 我这样做是因为既然你有一个内部有对象的对象,你需要将其转换为String来存储它。 JavaScript 已内置此功能,因此您无需安装任何东西。

现在如何检索和更新 localstor 对象?

好简单。 我用以下方法检索对象localStorage.getItem()函数,传递我之前设置的“obj”,并且我需要使用这个结果将其转换回对象类型(因为我们之前将其存储为字符串,还记得吗?)JSON.parse()功能。之后,我可以像编辑任何其他对象一样编辑该对象的属性:

localstor = JSON.parse(localStorage.getItem("obj"));
localstor.userInfo.username = "AnotherUsername"; 

我可以将新对象设置回 LocalStorage:

localStorage.setItem("obj", JSON.stringify(localstor));

就是这样!现在,当我再次检索它时,用户名的新值将在那里。

完整代码在这里:

var localstor = {
      userMsg : "Message",
      userInfo :{
                  ID: "SomeID",
                  username: "SomeUsername",
                  pwd : "SomePassword"
                }
    }

    //Put the localstor object into the cache
    localStorage.setItem("obj", JSON.stringify(localstor));


    //Retrieve the object
    localstor = JSON.parse(localStorage.getItem("obj"));
    //Change the username property
    localstor.userInfo.username = "AnotherUsername"; 
    //And put the editted object back to cache
    localStorage.setItem("obj", JSON.stringify(localstor)); 

如果您还有疑问,请告诉我,以便我更好地解答!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何存储和更新具有不同数据类型属性的 localStorage 键对象? 的相关文章

随机推荐

  • Android Studio布局大小文件夹

    我正在尝试为 1080dp 和其他使用创建不同的布局 layout sw1080dp 文件夹 但似乎 android studio 完全忽略它并从默认布局文件夹加载 我尝试了另一种方法 使用values sw1080dp 设置不同的尺寸 但
  • 提供程序:命名管道提供程序,错误:40 – 无法打开与 SQL Server 的连接。

    我开发了一个依赖于 SQL Server 数据库的 net 应用程序 该数据库位于用于开发应用程序的本地计算机上 当我将数据库移动到远程计算机并更改连接字符串时 出现以下错误 连接 SQL Server 2005 时建立与服务器的连接时发生
  • 无法使用 jest + puppeteer 获得测试覆盖率

    我有项目优秀 js https github com vitaly t excellent自动测试设置jest https github com facebook jest and 木偶师 https github com GoogleCh
  • Android Arctic Fox 的 InvokingTargetException 2020.3.1 M1 苹果芯片上的arm64

    在我的 M1 Apple Silicon 上构建 Android 项目期间 使用kapt 例如房间 Android Studio Arctic Fox 2020 3 1 Beta 1 arm64 Android Studio Arctic
  • 如何将 DataTable 转换为 IDatareader?

    我们都知道 DataReader 比 DataTable 更快 因为 DataReader 用于构建 DataTable 因此鉴于我已经有一个数据表 为什么我想将其转换为 DataReader 好吧 我正在创建一个名为 IDataProvi
  • java arraylist EnsureCapacity 不起作用

    要么我做错了 要么我不明白这个方法是如何工作的 ArrayList
  • 强制 pandas xaxis 日期时间索引使用特定格式

    我的 pandas 数据框如下所示 data1 data2 data3 DateTime 2016 04 18 16 16 53 66 1 94 8654 2016 04 18 16 17 03 67 1 94 8601 2016 04 1
  • 顺序一致但非静态一致的执行示例

    根据 Maurice Herlihy 和 Nir Shavit 的 多处理器编程的艺术 第 3 章 在并发程序的正确性方面 顺序一致性是比静态一致性更强的条件 作者还在 3 4 1 中提到 存在顺序一致的执行 但并非静态一致 我不明白怎么办
  • 使用 Jcraft 通过 SFTP 传输文件

    项目清单 我可以编写一个java程序通过SFTP传输文件 但是 这将包含一个带有可执行命令的脚本 这可以通过 Jcraft 实现吗 比方说 示例脚本文件是这样的 cd pub ascii get filename txt put other
  • 打字稿提升

    我试图理解打字稿中的提升 提升是否在 Typescript 中进行 如果是 与 Javascript 中的提升方式相比有什么不同吗 例如 即使我在使用它的函数之后声明了接口 代码也可以很好地转换 可以安全地假设它的发生是由于作为转译的一部分
  • 使用具有多行的 imagettftext 函数?

    我正在使用 php 创建透明文本 gt png 图像 到目前为止一切顺利 唯一的问题是我希望能够由于固定宽度而使文本自动换行 或者能够在文本中插入断线 有没有人有任何经验这样做 这是我的代码
  • 动态更改持久性单元 - JPA

    persistence xml 中的持久性单元是在构建应用程序期间创建的 由于我想在运行时更改数据库url 有什么方法可以在运行时修改持久化单元吗 我应该在分发后使用除预绑定数据库之外的不同数据库 我正在使用 EclipseLink JPA
  • Django-storage - 如何在上传之前检查文件大小?

    存储和 Django 1 6 我想限制保存的文件大小s3 执行此操作的适当方法是什么 我应该在表单中进行自定义字段验证 还是在使用 Django Storage 时有更好的方法来执行此操作 验证需要将文件上传到服务器 这建议的方式 http
  • 会话关闭后如何强制休眠释放内存?

    我们最近才开始使用 Hibernate 并且仍在适应它的工作方式 我们看到的一件事是 即使在所有会话关闭并且引用超出范围之后 hibernate 似乎仍然在其缓存中维护以前使用的数据库值 我们的代码可以多次读取一组表 因为所有的内存都被非常
  • 从通过 cron 作业运行的 bash 脚本访问 SSH 密钥

    我将这个脚本放在一起 每天更新一个分叉的 Github 存储库文件夹 如果我从提示符中调用它 它运行得很好 但我无法弄清楚如何让它在作为 cron 作业运行时可靠地利用我的 id rsa 这eval ssh agent 正是这样做的尝试 但
  • XCode中文档下的“注释”的用途是什么

    字体选择框下方有一个自由文本字段Xcode 5 似乎属于Notes类别 那么 注释和空盒子的目的是什么under No Font如下图所示 我尝试为我的一个组件 即我的按钮 使用注释 并为其添加一些注释 如图 1 所示 这是 XIB 中按钮
  • 单个请求到多个异步响应

    所以 问题来了 iPhone 很棒 但对于有服务器端要求的应用程序来说 带宽和延迟是严重的问题 我解决这个问题的最初计划是对数据位发出多个请求 双关语无意 并以此来处理大量传入 传出数据的问题 由于很多原因 这是一个坏主意 对我来说最明显的
  • Selenium:如何拦截请求

    有人知道如何在 Selenium WebDriver 中拦截 获取请求 url XHR 和响应吗 是否可以 Webdriver 不直接支持它 但您可以通过代理重定向来捕获所有流量 在爪哇 Proxy proxy new Proxy This
  • StartsWith() 不会转换为 LINQ 中的 Like('abc%')

    我有以下 ASP NET Core LINQ 代码 List
  • 如何存储和更新具有不同数据类型属性的 localStorage 键对象?

    这是我第一次使用localStorage我想存储一个localStoragekey 是一个具有不同数据类型属性的对象 例如 key localstor 它是一个包含两个属性的对象 localstor userMsg String userI