0

ローカル ストレージに保存しているアイテムがいくつかあります。ページが読み込まれるもの、次のような約 20 行があります。

 var SomeVar = localStorage.getItem('SomeKey');

これを変更して、1 回の読み取りですべてのストレージ データを取得し、それを一時オブジェクトに格納して、その一時オブジェクトから 20 個の変数を取得したいと考えています。

1回の読み取りでローカルストレージを読み取るにはどうすればよいですか?

ありがとう。

4

3 に答える 3

0

これを実行したい理由は考えられませんが、localStorage基本的にオブジェクトであるという事実を利用して、次のようなことを行うことができます。

var tempLocalStorage = {};
for(prop in localStorage) {
    if(localStorage.hasOwnProp(prop)) {
        tempLocalStorage[prop] = localStorage.getItem(prop);
    }
}

var SomeVar = tempLocalStorage["SomeKey"];

の値をループしlocalStorageて、一時的なローカルストレージ変数に追加しています。次に、標準と同じキーを使用して一時ローカルストレージ変数にアクセスできますが、を使用するカスタム構文でlocalStorageはなく、標準のオブジェクトプロパティ構文を使用します。getItem()localStorage


編集:ここに提案があります。localStorageすべての変数を1つのオブジェクトに保存してから、個別のオブジェクトを保存する代わりに、そのオブジェクトをロードして保存します。最も時間がかかるのは、呼び出しにアクセスする個々の変数です。最適化に関するこの投稿によると、単一の変数からメモリに10文字を読み取るのに、1000を読み取るのとほぼ同じ時間がかかります。localStorage

于 2012-05-17T00:53:29.087 に答える
0

すべての変数を単一のオブジェクトに保持し、JSON を使用して文字列との間で変換できます。

// read:
var localvars = JSON.parse(localStorage.myvars || '{}');
// copy from temporary object to desired variable:
var someVar = localvars.someKey;
// write:
localStorage.myvars = JSON.stringify(localvars);

この方法を使用する場合、再帰変数を に保存しないように注意する必要があります。失敗localvarsする可能性があります。JSON.stringifyしかし、これらの構造を格納することはできなかったので、それは実際には問題ではありませんlocalStorage

localStorage で for-in ループを使用することはお勧めしません。なぜなら、自分のスクリプトだけが にアクセスしていると想定してはならないからですlocalStorage

于 2012-05-17T01:38:53.290 に答える
0

jStorage を見たことがありますか? http://www.jstorage.info/ 私はそれをかなり使用していますが、1 つのオブジェクトの下にすべてを格納するという点で似たようなことをしているようです。古い IE バージョン用のクロスブラウザもあります。

于 2012-05-17T01:41:57.797 に答える