【问题标题】:Setting nested object value in session storage在会话存储中设置嵌套对象值
【发布时间】:2019-03-02 17:41:37
【问题描述】:

大家好,更新​​我存储在会话存储中的值时遇到了困难。我尝试了几种方法来定位嵌套对象值,但没有成功。任何帮助将不胜感激。

我在 JavaScript 中创建的对象

   var projectInfo = {
        project1: {
            name: 'Unique name',
            extraCredit: true
        }
        project2: {
            name: 'Unique name',
            extraCredit: true
        }
    }

我如何坚持会话

sessionStorage.setItem('projectInfo', JSON.stringify(projectInfo));

如何定位项目信息中的嵌套项目名称。例如

sessionStorage.setItem(projectInfo.project1.name, 'Student Fund raiser')

【问题讨论】:

    标签: javascript session-storage


    【解决方案1】:

    你不能那样做。您必须检索整个对象,对其进行解析,更改您想要的内容,然后将其放回存储中:

    var projectInfo = JSON.parse(sessionStorage.getItem('projectInfo'));
    projectInfo.project1.name = 'Student Fund raiser';
    sessionStorage.setItem('projectInfo', JSON.stringify(projectInfo));
    

    注意:你不妨检查sessionStorage.getItem是否返回一些东西,以防对象尚未存储。

    【讨论】:

    • 哈哈!因领先我 20 秒而被投票赞成;与@SteveArcher 相同。这是一个很好的答案,和我建议的一样。
    • @SteveArcher 抱歉。下一次,也许吧!
    • @Anovative 同上。
    • 谢谢你们的时间,这很有意义并且工作得很好。
    【解决方案2】:

    当嵌套项被字符串化时,你不能改变它的值(好吧,我想理论上你可以通过某种方式自己解析字符串,但这听起来像是一件真正的苦差事)。我认为最好的方法是检索字符串,将其解析回 JS 对象,设置值,重新字符串化,然后存储。

    var projectString = sessionStorage.getItem('projectInfo')
    var projectObject = JSON.parse(projectString)
    projectObject.project1.name = 'Student Fund raiser'
    sessionStorage.setItem(JSON.stringify(projectObject))
    

    【讨论】:

      猜你喜欢
      • 2017-08-25
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      • 2012-01-26
      • 2014-01-17
      • 1970-01-01
      相关资源
      最近更新 更多