web-dev-qa-db-ja.com

オブジェクト処理のlocalStorage配列

JSONオブジェクトの配列はHTML5 localStorageに保存されます。
当面の区切り文字は_;_です。
使用されているlocalStoragesplit(';')およびjoin(';')操作からオブジェクトの配列にアクセスして変更するため。

ただし、区切り文字のアプローチは不安定に見えます。
_;_はオブジェクト属性内で満たすことができ、split(';')操作は正しくありません。

区切り文字として_;;_を使用できますが、安定していることもわかりません。

localStoragelocalStorageとして保存されている限り、オブジェクトの配列として表示されるStringを処理する堅牢な方法はありますか?

[〜#〜]編集[〜#〜]

ストッパーの1つは、オブジェクトの配列をクラシックとしてlocalStorageに保存できなかったことです:_"[{},{}]"_
localStorageは、_"{},{}"_のような文字列に自動的に変換します

localStorage内の私の現在のデータ:

_"{"name":"volvo","id":"033"};{"name":"saab","id":"034"}"
_

仮定
おそらく、最初に_[_を追加し、最後に_]_を追加することができますが、正常に見えません

17
sergionni

オブジェクトをJSON文字列に変換するだけです。

_localStorage.setItem("savedData", JSON.stringify(objects));
_

およびその逆:

_objects = JSON.parse(localStorage.getItem("savedData")));
_

または、同じlocalStorage値に複数のオブジェクトを追加できます。

_localStorage.setItem("savedData", JSON.stringify([object1, object2 /*, etc*/]));
object1 = JSON.parse(localStorage.getItem("savedData"))[0];
object2 = JSON.parse(localStorage.getItem("savedData"))[1];
_

これがDOMストレージの仕様です

次のようにsavedDataにアクセスすることもできます:

_localStorage.savedData = "Hello world"
var foo = localStorage.savedData;
_

これはデータの取得と設定の両方に使用できますが、getItem('name');およびsetItem('name', 'value');よりも「安全」とは言えません。

39
Cerbrus

変数を読み取る:

var xyz = JSON.parse( localStorage.getItem( 'element' ) );

変数を保存する:

localStorage.setItem( 'element' , JSON.stringify(xyz));

ここで、elementはローカルストレージ変数の名前、xyzはjs変数の名前です。

0
RRikesh

配列が大きすぎない場合は、解析と文字列化を使用できますが、大きすぎる場合は、小さな変更ごとにデータセット全体を再エンコードします。

http://rhaboo.org のライブラリは、リンクされたリスト内の各配列エントリに独自のlocalStorageエントリを与えることにより、ライブラリを改善しています。つまり、非常に効率的に変更を加えることができます。 JSONとは異なり、テキスト名のプロパティと3つの異なるタイプの疎エントリ(null、未定義、単純に存在しない)も尊重します。

ところで、私はラブーを書いた。

0
Adrian May