Mieliśmy więc przypadek, w którym mielibyśmy obiekt, w którym klucz to id (int), a wartość to łańcuch. Ale zauważyliśmy, że w większości przypadków wyszukujemy id na podstawie łańcucha, więc zdecydowaliśmy się go odwrócić i uczynić ciąg kluczem, a wartością jest id. Ponieważ w ten sposób zamiast przechodzić przez każdy element i porównywać wartości, moglibyśmy po prostu zrobić var id = storage[text];
. Poniżej znajdują się przykłady tego, co zrobiliśmy.
Oto przykład starej implementacji:
var storage = {
0 : null,
1 : "Hello",
2 : "world!",
3 : "How are you?"
}
Oto przykład nowej implementacji:
var storage = {
"null" : 0,
"Hello" : 1,
"world!" : 2,
"How are you?" : 3
}
Rozumiem, że teraz ciąg jest kluczem i można uzyskać ten sam identyfikator dla tych samych ciągów. Ale od teraz ciąg może być potencjalnie dość duży (niewielkie szanse, ale prawdopodobnie maksymalnie 1 KB na ciąg), czy istnieje ograniczenie długości, które JS lub Android Webview nakłada na klucze obiektów?
A także, czy ta implementacja ma wady? Jak dotąd nie zauważyłem żadnych problemów, ale nigdy nie wiadomo.