私たちはいくつかのJSONを持つケースがありました。ここでkeyはid(int)で、値は文字列です。しかし、ほとんどの場合、文字列に基づいてidを調べるので、それを逆にして文字列をキーにして値をidにすることに決めました。そのため、各項目を調べて値を比較する代わりに、var id = storage[text];
を実行するだけで済みます。以下は私たちがしたことの例です。JSオブジェクトのキー(文字列)の長さに制限はありますか?
ここでは、古い実装の例です:
var storage = {
0 : null,
1 : "Hello",
2 : "world!",
3 : "How are you?"
}
は、ここで新しい実装の例です:
var storage = {
"null" : 0,
"Hello" : 1,
"world!" : 2,
"How are you?" : 3
}
私は今、文字列がキーであり、それは同じを取得しても大丈夫だということを理解します同じ文字列のid。しかし、今のところ文字列は潜在的に非常に巨大(潜在的な可能性がありますが、おそらく1文字あたり最大1KBです)、JSまたはAndroid webviewのオブジェクトの長さに制限がありますか?
また、この実装には欠点がありますか?これまで何の問題も気づいていませんが、あなたは決して知りません。
現代のブラウザの長いキーのランタイム*ペナルティはどれですか? –
@AhmedFasih私はそれをテストしていないので、私は確かに分かりません。パフォーマンスのペナルティがある場合は、長い文字列を比較する必要があると思います。実際に問題となる問題がある場合は、キーが非常に多く、数が多く、メモリの制約に遭遇しない限り、驚くでしょう。モバイル上で – hashchange
ES7仕様では、[要素のうち2^53 - 1の制限]を指定しています(http://www.ecma-international.org/ecma-262/7.0/index.html#sec-ecmascript-language-types-string -タイプ)。しかし、私はそれがヒープの最大サイズによって制限されていると思う。 – mems