在会话存储中设置嵌套对象的值

时间:2018-09-26 21:31:22

标签: javascript session-storage

您好,每个人都在艰难地更新我存储在sessionstorage中的值。我尝试了几种方法来定位嵌套对象的值,但运气不好。任何帮助将不胜感激。

我正在使用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')

2 个答案:

答案 0 :(得分:5)

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

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

注意:如果尚未存储对象,您最好检查sessionStorage.getItem是否返回某些内容。

答案 1 :(得分:1)

在嵌套项目为字符串时,您不能更改其值(嗯,从理论上讲,您可以通过某种方式自行解析该字符串,但这听起来很麻烦)。我认为最好的方法是检索字符串,将其解析回JS对象,设置值,重新字符串化,然后存储。

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