2

ls.getItem[i]キーではなくインデックスを使用して、ChromeでlocalStorageの読み取りパフォーマンスを2倍にするls.getItem('key')

出典:このツイートこの講演(スライド19)は、いくつかのすばらしいJavaSciriptライブラリを作成した人たちによるものです。私はこれらの人が彼らが話していることを知っていると思うので、なぜこれが私にとってうまくいかないのか疑問に思います:

localStorage.setItem(0, 'Hello world');
localStorage.getItem(0); // 'Hello World' – Works as expected
localStorage.getItem[0]; // undefined

私は何かを誤解しましたか?その話によると、最後のメソッド呼び出しはでは'Hello world'なく戻る必要がありundefinedます。

それらはこのJSビンにもリンクしていますが、そこでインデックスを介して値を読み取ると、まだ取得しundefinedます。

編集:localStorageを使用してインデックスを正しく読み取る方法を知っています。インデックスを使用して質問しgetItemています。話は間違った使い方を示唆しているようですか?また、なぜ32人がテストせずにその使用法をリツイートしたのだろうか。それらのことは私を苛立たせます。

4

6 に答える 6

5

私の名前はクリスです。混乱を引き起こしているスライドの責任者は私です。ご迷惑をおかけしましたことをお詫び申し上げます。スライドは少し冗談でした。説明させてください。

パネルに至るまでの数日間に、localStorageの読み取りパフォーマンスを2倍にすることについてツイートが投稿され、リツイートされました。ツイートはあなたが参照したものです(Twitter)。しかし、このツイートを見たとき、構文が非常に間違っているように見えたので、ダブルテイクをしました。構文をテストしたのは、あなたが行ったのと同じことを発見しただけです。localStorageの値にアクセスしようとしている場合、この構文は明らかに無効です。

SXSWのステージでは、この神話は冗談として提示されました。はい、localStorage.getItemの数値インデックスを参照することで2倍のパフォーマンスが得られます。ただし、すべての値は未定義です。

とにかく、誤った情報の拡散を取り消そうとして、私はそれをさらに拡散することに成功したようです。問題をお知らせいただきありがとうございます。

于 2012-05-23T07:03:07.090 に答える
3

インデックスを介したアクセスは機能しません(少なくともChromeでは)。しかし、あなたは使うことができます:

localStorage.getItem(localStorage.key(0));

localStorage.key(n)は、n番目のキーの値を返します。このキーはlocalStorage.getItem()に渡されます。

于 2018-10-05T18:40:28.727 に答える
1
localStorage.getItem();

関数であるため、配列表記を使用してアクセスすることはできません。代わりに、次を使用できます。

localStorage.setItem(0, 'foo');
localStorage[0]; // 'foo'

文字列キーを使用する場合は、次のことができます。

localStorage.setItem('foo', 'bar');
localStorage.foo // 'bar'
于 2012-05-21T16:51:38.543 に答える
0

あなたはそれをすることはできません。アイテムを取得する2つの適切な方法は、;のインデックスによるgetItemか、直接のインデックスによるものです。localStorageのプロパティを取得することによってではありませんgetItem

この機能について言及しているドキュメントには何もありません。また、試したどのブラウザでも機能しないため、どこから入手したのかわかりません。たぶんそれはとてもエキサイティングなので、パフォーマンスが向上するので、彼らはそれが機能するかどうかをわざわざチェックしませんでしたか?

于 2012-05-21T16:32:51.057 に答える
0

私はそれがちょうどあるべきだと思います:

localStorage[0]

これは、Chromeの最新バージョンで確実に機能します。

于 2012-05-21T16:34:24.827 に答える
0

これがどのように機能するかわかりません:

localStorage.getItem[0];

getItemはメソッドであり、そのようにアクセスすることはできません。

ただし、キーを使用してlocalStorageに直接アクセスすることは可能です。これは次のように実行できます。

console.log( localStorage[0] );
console.log( localStorage['test'] );

メソッドよりも高速かどうかにかかわらず、自分でテストする必要があります。

jsFiddleはこちら

于 2012-05-21T16:34:54.540 に答える