114

そのため、長さがあるため、通常のオブジェクトのように localStorage をループできると考えていました。どうすればこれをループできますか?

localStorage.setItem(1,'Lorem');
localStorage.setItem(2,'Ipsum');
localStorage.setItem(3,'Dolor');

を実行すると、どちらが正しいかlocalStorage.lengthが返されます。したがって、ループが機能3すると思います。for...in

私は次のようなことを考えていました:

for (x in localStorage){
    console.log(localStorage[x]);
}

しかし、役に立たない。何か案は?

私が持っていた他のアイデアは次のようなものでした

localStorage.setItem(1,'Lorem|Ipsum|Dolor')
var split_list = localStorage.getItem(1).split('|');

for...in機能します。

4

9 に答える 9

161

メソッドを使用できますkeylocalStorage.key(index)番目のキーを返しindexます (順序は実装定義ですが、キーを追加または削除するまで一定です)。

for (var i = 0; i < localStorage.length; i++){
    $('body').append(localStorage.getItem(localStorage.key(i)));
}

順序が重要な場合は、JSON でシリアル化された配列を格納できます。

localStorage.setItem("words", JSON.stringify(["Lorem", "Ipsum", "Dolor"]));

草案の仕様では、構造化されたクローンをサポートするすべてのオブジェクトを値にできると主張しています。しかし、これはまだサポートされていないようです。

編集:配列をロードするには、配列に追加してから保存します:

var words = JSON.parse(localStorage.getItem("words"));
words.push("hello");
localStorage.setItem("words", JSON.stringify(words));
于 2010-06-29T07:13:38.003 に答える
25

他のすべての回答に加えて、jQuery ライブラリの$.each関数を使用できます。

$.each(localStorage, function(key, value){

  // key magic
  // value magic

});

最終的に、次のオブジェクトを取得します。

JSON .parse(localStorage.getItem(localStorage.key(キー)));

于 2015-01-25T00:02:32.330 に答える
10

これはChromeで機能します:

for(var key in localStorage) {
  $('body').append(localStorage.getItem(key));
}
于 2013-05-04T07:36:08.670 に答える
4

localStorageですObject

他のオブジェクトと同じように、 JavaScript の for/in ステートメントを使用してループできます。

そして.getItem()、各キー (x) の値にアクセスするために使用します。

for (x in localStorage){
    console.log(localStorage.getItem(x));
}
于 2019-10-02T12:42:24.140 に答える
1

これらの回答はすべて、ブラウザ間の localStorage の実​​装の違いを無視しています。この分野の貢献者は、彼らが説明しているプラ​​ットフォームで彼らの応答を厳しく修飾する必要があります。ブラウザー全体の実装の 1 つが https://developer.mozilla.org/en/docs/Web/API/Window/localStorageで文書化されており、非常に強力ですが、いくつかのコア メソッドしか含まれていません。コンテンツをループするには、個々のブラウザーに固有の実装を理解する必要があります。

于 2016-02-12T02:44:49.953 に答える