所以我們有一個情況,我們會有一些JSON,其中鍵是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爲相同的字符串。但是從現在開始,字符串可能會非常龐大(很少機會,但每個字符串最大可能爲1KB),是否存在JS或Android webview放置對象鍵的長度限制?
而且,這個實現有缺點嗎?到目前爲止我還沒有注意到任何問題,但你永遠不知道。
現代瀏覽器的長鍵的任何* runtime *懲罰? –
@AhmedFasih我還沒有測試過,所以我不確定。如果出現性能損失,我會假設它將與比較長字符串有關。如果在實踐中存在問題,我會感到很驚訝 - 除非密鑰是_huge_和衆多,並且您開始遇到內存限制,例如,在移動。 – hashchange
ES7規範指定[元素的限制2^53 - 1]](http://www.ecma-international.org/ecma-262/7.0/index.html#sec-ecmascript-language-types-string -類型)。但我認爲它受限於堆最大尺寸 – mems