2012-03-18 22 views
1

我正在广泛使用本地存储,这很好,因为它有助于通过在客户端存储会话来维护状态。然而问题是更新会话时。JavaScript通过本地存储循环查找元素

我有几个我在json中序列化并放入会话中的对象列表。这些对象有几个属性,包括ID和日期。另一方面,我需要遍历这些列表来查找列表中是否包含我正在通过ID查找的对象之一。

我用来存储我的json的密钥包括一个日期;像这样:

var TheData = JSON.stringify(TheListOfMyObjects); 
var SessionKey = 'TheListOfObjectsFor' + TheMonth + "." + TheDay + "." + TheYear; 
localStorage.setItem(SessionKey, TheData); 

现在我需要检查是否在会话中有一个具有特定ID的对象。我不知道对象的日期属性,只是它的ID。我也不知道哪个日期在会话中有价值。

我怎么能通过ID找到我的对象?如果我可以在内存中加载会话,以便我可以循环访问会很好。

回答

3

如果ID位于该对象内,则需要提取每个对象并比较这些字段。

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; 
    } 
} 
+0

ok,cool;没有考虑长度属性,但这确实解决了我的问题。谢谢。 – frenchie 2012-03-18 13:33:09