我正在广泛使用本地存储,这很好,因为它通过在客户端上存储会话来帮助维护状态。但问题是更新会话时。
我有几个我在json中序列化的对象列表,并且我放入了会话。对象具有多个属性,包括ID和日期。在另一点上,我需要循环遍历这些列表,以查明其中一个列表是否包含我正在通过ID查找的对象之一。
我用来存储json的密钥包含一个日期;像这样:
var TheData = JSON.stringify(TheListOfMyObjects);
var SessionKey = 'TheListOfObjectsFor' + TheMonth + "." + TheDay + "." + TheYear;
localStorage.setItem(SessionKey, TheData);
现在我需要检查会话中是否有一个具有特定ID的对象。我不知道对象的日期属性,只知道它的ID。我也不知道哪个日期在会话中有价值。
我如何通过ID找到我的对象?如果我可以在内存中加载会话以便我可以遍历它,那就太好了。
答案 0 :(得分:3)
如果ID
在对象内,则需要提取每个localStorage
对象,并比较这些字段。
var obj1 = {ID : "a", field: 543}
var obj2 = {ID : "b", field: 161}
var obj3 = {ID : "c", field: 425}
localStorage.setItem("item1", JSON.stringify(obj1));
localStorage.setItem("item2", JSON.stringify(obj2));
localStorage.setItem("item3", JSON.stringify(obj3));
var ID_Needed = "b";
for(var i = 0; i < localStorage.length; i++) {
var obj = JSON.parse(localStorage.getItem(localStorage.key(i)));
if(obj.ID == ID_Needed) {
console.log(obj);
break;
}
}