如何从localStorage

时间:2016-09-28 01:51:28

标签: javascript json html5

我试图创建一个允许我使用JSON.stringify保存变量的函数,我的代码可以将数据保存在localStorage中,但是,我不知道如何检索它。

这是我的代码:

<body>
<button id="btn"> SAVE </button>

<script>
if(btn){
  btn.addEventListener("click", function(){saveSession();})
}
function saveSession(){
 var session = {'myValues': [],'state': true};
 session.myValues.push({ 'value 1': '50'});
 session.myValues.push({ 'value 2': '100'});
 session.myValues.push({ 'value 3': '150'});
 alert("saved");
 localStorage.setItem('session', JSON.stringify(session));
 var restoredSession = JSON.parse(localStorage.getItem('session'));
}
</script>
</body>

此代码将数据保存在localStorage中,但是,我现在想要的是获取保存的数据value 1并将其值分配给某个变量50,假设我有var myValue并且value 1它等于50,所以,myValue将是50.我怎么能这样做?提前感谢。

1 个答案:

答案 0 :(得分:3)

&#13;
&#13;
function getValue(key) {
  // Get the session object and parse it
  var session = JSON.parse(localStorage.getItem('session'));
  // Seperate out myValues
  var myValues = session.myValues;
  // Filter out values that don't have a key equal to the key provided
  var filteredValue = myValues.filter(item => item.hasOwnProperty(key));
  // Based on the example you provided there should only be one item with that key so return the first item in the filtered array
  return filteredValue[0];
}

var myValue = getValue('value 1');
&#13;
&#13;
&#13;

所以上面应该会给你你想要的结果。也就是说,由于您的数据结构,这是不必要的困难。 myValues只是键值对吗?如果是这样,为什么不直接说

session.myValues['value 1'] = '50';
session.myValues['value 2'] = '100';
session.myValues['value 3'] = '150';

此外,使用以空格为键的字符串不是一种好习惯。如果通过括号表示,则需要访问。另一种选择是

session.myValues.value1 = '50';
session.myValues.value2 = '100';
session.myValues.value3 = '150';

最后,如果你执行上述操作,getValue函数变得更加简单......

&#13;
&#13;
function getValue(key) {
  var session = JSON.parse(localStorage.getItem('session'));
  return session.myValues[key];
}

var myValue = getValue('value 1');
&#13;
&#13;
&#13;

你可能会问 - 你还是用括号表示法吗?每当动态访问密钥时,这是一项要求。所以上面的命名选项仍然有效......但通常不鼓励。