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

Javascript 如何存储和更新具有不同数据类型属性的localStorage key对象?,javascript,local-storage,Javascript,Local Storage,这是我第一次使用localStorage,我想存储一个localStorage键,它是一个具有不同数据类型属性的对象,例如键“localstor”,它是一个包含两个属性的对象: localstor= { userMsg : String , userInfo : (Object) { ID: String , username: String , pwd :String } } 属性userMsg的类型为String,而属性userInfo的类型为object 我知道如何根据设置和获取仅包含对

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

localstor= { userMsg : String , userInfo : (Object) { ID: String , username: String , pwd :String } }
属性
userMsg
的类型为
String
,而属性
userInfo
的类型为
object

我知道如何根据设置和获取仅包含对象的项 ,但就我而言,我不知道如何设置和获取这种密钥?特别是如果我想在localstor中更新对象userInfo,该怎么做


感谢您的帮助

我不知道我是否理解了你的问题,如果我理解了,请告诉我,这样我就可以更正我的答案,但我认为你试图做的是使用
localStorage
操作保存在缓存中的项目,例如,该数据是一个包含多种类型数据的对象。

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

将其放入localStorage非常简单(正如您指出的,您已经知道如何操作),所以您只需要选择一个键。在这里,我选择“obj”作为键:

您可能已经注意到,我使用了一个函数
JSON.stringify()
。 我这样做是因为你有一个里面有对象的对象,你需要把它转换成一个字符串来存储它。JavaScript已经内置了这个函数,所以您不需要安装任何东西

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

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

localstor = JSON.parse(localStorage.getItem("obj"));
localstor.userInfo.username = "AnotherUsername"; 
我可以将新对象设置回本地存储:

localStorage.setItem("obj", JSON.stringify(localstor));
就这样!现在,当我再次检索它时,username的新值将出现

完整代码如下:

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)); 

如果你还有任何疑问,请告诉我,这样我可以更好地回答

我不知道我是否理解了你的问题,如果我理解了,请告诉我,这样我就可以更正我的答案,但我认为你试图做的是使用
localStorage
操作保存在缓存中的项目,例如,该数据是一个包含多种类型数据的对象。

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

将其放入localStorage非常简单(正如您指出的,您已经知道如何操作),所以您只需要选择一个键。在这里,我选择“obj”作为键:

您可能已经注意到,我使用了一个函数
JSON.stringify()
。 我这样做是因为你有一个里面有对象的对象,你需要把它转换成一个字符串来存储它。JavaScript已经内置了这个函数,所以您不需要安装任何东西

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

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

localstor = JSON.parse(localStorage.getItem("obj"));
localstor.userInfo.username = "AnotherUsername"; 
我可以将新对象设置回本地存储:

localStorage.setItem("obj", JSON.stringify(localstor));
就这样!现在,当我再次检索它时,username的新值将出现

完整代码如下:

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)); 

如果你还有任何疑问,请告诉我,这样我可以更好地回答

hi的可能重复,我提出了这个问题,但这没有帮助,我知道如何通过JSOn解析将对象存储在localStorage中,但是如果我像上面的示例一样,如何更新用户信息的内容,然后在localstor中恢复它?为什么是负数?这不是同一个问题!我不明白!hi的可能重复,我提出了这个问题,但这没有帮助,我知道如何通过JSOn解析将对象存储在localStorage中,但是如果我像上面的示例一样,如何更新用户信息的内容,然后在localstor中恢复它?为什么是负数?这不是同一个问题!我不明白!你好,我感谢你回答我的问题,你的解释很完美,你的答案正是我想要的,非常感谢你,我感谢你回答我的问题,你的解释很完美,你的答案正是我想要的,非常感谢