2011-07-09 11 views
1

ここに私がしたいことがあります、私はこのような何かを持っています: "キー" - "コンテンツ"、各 "キー"はコンテンツのためにユニークではなく、1つのキーは0以上のコンテンツを持つことができます多くの.... ファイルは約200Kbです、私はそれを配列に変換し、それをすべてjavascriptに入れます。ユーザータイプを入力すると、結果を見つけるために配列を1回ループしますが、遅いです... これを行う方法に関する提案はありますか?ありがとうございました。JavaScriptのデータの長いリストをより高速にクエリする方法はありますか?

(実装が許されるjavascriptのみクライアント側、分析に結果をサーバーを使用して返送することはできませ。)

+0

は鍵がしていることを順序のいずれかの種類がありますか? – Kayla

+0

ファイルのいくつかの行を表示できますか? – KooiInc

+0

[OK]を、ここでファイルは次のようになります:|日 |曰 | | AA |昌 AA |昍 AAA |晶 aamh |暘 AAPH |晹 AAPV | 暍 aate |曝 aayf |暻 AB |暝 アッベ| |曖 abbt |盟 abhaf |鷳 abik | ABAC明猒 – Tattat

答えて

2

私があなたを正しく理解していれば、John Resigの記事へのリンクが役立つかもしれません。彼の問題は、大きなテキストファイルで有効な単語をタイプしているときに、パフォーマンスが悪いことでした。

パート1:Dictionary Lookups in JavaScript
パート2:JavaScript Trie Performance Analysis

2

あなたが可能な値の配列を指すユニークなキーを使用して、連想配列を使用することはできますか?

{ 'key1' => ['value1','value2','value3'], 
    'key2' => ['value1','value2'], 
    'key3' => ['value1'], 
} 

これは、リストを解析するオーバーヘッドが増えることを意味しますが、リストを検索するほうがはるかに高速になると思います。メモリ内の重複するキーをすべて複製していないため、メモリの使用量も少なくてすみます。

+1

どこに(ほとんどのターゲット上) "よりオーバーヘッド" = "ほとんど影響"。 –

2

「キー」と一致するはずのものを入力しているとしますか?または "コンテンツ"ですか?

キーとし、キーをソートしてバイナリ検索を使用します。一度ヒットしたら(部分一致、例えば最初の手紙のように)、一致が失敗するまでスキャンを続けてください。それがあなたの結果です。

コンテンツを照会しているのであれば、同じ前提ですが、インデックスを逆転させてコンテンツに鍵を付けて並べ替える必要があります。

関連する問題