ブラウザーでローカル ストレージを少し操作しました。しかし、キーと値のペアとして文字列のみを使用しました。文字列のリストを(単一のキーに対して)保存して読み取る方法はありますか??
たとえば、友達をページに表示する必要があるとします。ローカルストレージを利用できれば、フレンドリストを表示するために毎回データベースにクエリを実行する必要はありません (私のアプリケーションでは問題ない矛盾があることはわかっています)。これを達成する方法はありますか????
前もって感謝します :)
ブラウザーでローカル ストレージを少し操作しました。しかし、キーと値のペアとして文字列のみを使用しました。文字列のリストを(単一のキーに対して)保存して読み取る方法はありますか??
たとえば、友達をページに表示する必要があるとします。ローカルストレージを利用できれば、フレンドリストを表示するために毎回データベースにクエリを実行する必要はありません (私のアプリケーションでは問題ない矛盾があることはわかっています)。これを達成する方法はありますか????
前もって感謝します :)
はい、できます。localStorage は文字列を格納するだけなので、簡単に解析できる形式で格納する必要があります。
文字列のリストの最も簡単な方法は、文字列化された配列として格納することです。
保管:
localStorage['mylist'] = JSON.stringify(['string1', 'string2']);
読み込み中:
var mylist = JSON.parse(localStorage['mylist']);
さらに追加して保存する:
mylist.push('newstring');
localStorage['mylist'] = JSON.stringify(mylist);
XML ドキュメント内に保存することも、JSON を使用して任意のテキスト ファイルに保存することもできます: http://en.wikipedia.org/wiki/JSON
配列を JSON に変換できます。それは一つの選択です。変換してから文字列として保存し、それを読み込んで元に変換します。
このために、以下のいくつかの関数を使用します。これらは次のように呼び出されます。
jsonStore.putJson("friendInfo", frientInfo); // friendInfo is an object or array
var readFriendInfo = jsonStore.getJson("friendInfo");
var jsonStore = function () {
return {
getJson: function(key) {
var ret = localStorage[key];
if (ret) {
try {
ret = JSON.parse(ret); // use JSON3 to handle multiple browsers/versions
} catch (e) {
ret = undefined; // for parse failure
}
}
return ret;
},
putJson: function(key, value) {
localStorage[key] = JSON.stringify(value); // use JSON3 for this too
}
};
}();
また
friendInfo
各友人に関する文字列が配列要素にあり、各インデックスが異なる友人を示していると仮定すると、次のようなことができます。
for (var i=0; i < friendInfo.length ; ++i) {
localStorage.setItem("friend" + i, firentInfo[i]);
}
これを行うとき、通常、いくつあるかを示す別のアイテムを保存します。
localStorage.setItem("friend.length", friendInfo.length);