localStorage值可以是对象还是数组?

时间:2017-02-09 06:12:59

标签: javascript html html5 local-storage javascript-objects

我正在尝试使用var data={ teams:5, points:25,team1:5,team2:10, team3:5, team4:0, team5:5}; localStorage ("save", data); 等在用户的计算机中设置存储空间。但我不确定该值是否可以是对象。我已经检查了互联网,但我似乎无法在那里找到明确的答案。

const {t} = this.props;
<li>{ t(nav.home, {defaultValue : "MY HOME"}) }</li> 

思想?

5 个答案:

答案 0 :(得分:4)

不,密钥和值必须是DOMString。见https://developer.mozilla.org/en-US/docs/Web/API/Storage/setItem

您可以做的是在设置之前将数据序列化为JSON

localStorage.setItem('save', JSON.stringify(data))

读取值时,您可以解析回对象

let saveData = JSON.parse(localStorage.getItem('save'))

答案 1 :(得分:2)

本地存储仅限于处理字符串键/值对,您可以使用JSON.stringify并在获取值JSON.parse时执行以下操作

var testObject = { {name:"test", time:"Date 2017-02-03T08:38:04.449Z"} };

//将对象存入存储

localStorage.setItem('testObject', JSON.stringify(testObject));

//从存储中检索对象

var retrievedObject = localStorage.getItem('testObject');

console.log('retrievedObject: ', JSON.parse(retrievedObject));

答案 2 :(得分:1)

不,localstorage将字符串作为并保存。如果要保存任何对象,请将其转换为字符串,然后保存。 从本地存储中获取它时,我们得到字符串。你可以很容易地把它变成对象。 如果您直接将对象保存到localStorage,那么它将以&#34; [object Object]&#34; 的方式保存,当从localStorage获取它时,您将获得&# 34; [object Object]&#34; as String。

错误代码:

var data={teams:5, points:25,team1:5,team2:10, team3:5, team4:0, team5:5};
localStorage.setItem("save", data);
localStorage.getItem("save")

您将获得&#34; [object Object]&#34;

正确代码:

var data={teams:5, points:25,team1:5,team2:10, team3:5, team4:0, team5:5};
localStorage.setItem("save",JSON.stringify(data));
localStorage.getItem("save")

从localStorage获取值

错误代码:

localStorage.getItem("save")

它将以字符串形式获取数据。

正确代码:

JSON.parse(localStorage.getItem("save"))

它将以对象的形式返回数据。

我希望解决方案得到很好的解释。

答案 3 :(得分:0)

不,不可能,但你可以使用stringify。例如:

localStorage.setItem('user', JSON.stringify(r.user));

答案 4 :(得分:0)

您需要使用localStorage.setItem(keyName, keyValue);

对于存储对象,您可以使用JSON.stringify(object)将对象转换为字符串。

来自MDN

  

<强>的keyName
  一个DOMString,包含您想要的键的名称   创建/更新。

     

<强>的keyValue
  包含您想要的值的DOMString   给出你正在创建/更新的密钥。