2012-03-18 10 views
1

私はローカルストレージを大量に使用しています。これはクライアントにセッションを保存することで状態を維持するのに役立ちます。しかし、問題はセッションを更新するときです。javacriptがローカルストレージをループして要素を探す

私はjsonでシリアル化してセッションに入れるオブジェクトのリストをいくつか持っています。オブジェクトにはIDと日付を含むいくつかのプロパティがあります。別のポイントでは、これらのリストをループして、リストの1つにIDで探しているオブジェクトの1つが含まれているかどうかを調べる必要があります。

私のjsonを保存するために使用するキーには日付が含まれています。

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

ここで、特定のIDを持つオブジェクトがセッション内にあるかどうかを確認する必要があります。私はオブジェクトの日付プロパティを知っているだけで、そのIDです。私はまたどの日付がセッションに値を持っているのかわからない。

IDでオブジェクトを検索するにはどうすればよいですか?私はそれをループすることができるように私はメモリ内のセッションを読み込むことができればいいですね。

答えて

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

ok、cool;長さのプロパティについては考えなかったが、それは確かに私の問題を解決する。ありがとう。 – frenchie

関連する問題