我试图创建一个允许我使用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.我怎么能这样做?提前感谢。
答案 0 :(得分:3)
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;
所以上面应该会给你你想要的结果。也就是说,由于您的数据结构,这是不必要的困难。 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函数变得更加简单......
function getValue(key) {
var session = JSON.parse(localStorage.getItem('session'));
return session.myValues[key];
}
var myValue = getValue('value 1');
&#13;
你可能会问 - 你还是用括号表示法吗?每当动态访问密钥时,这是一项要求。所以上面的命名选项仍然有效......但通常不鼓励。