JavaScriptで配列(セット)を検索する

特定の(文字列)値が有効な値のセットに該当するかどうかを判断する必要があるときに、最近問題を解決しました。
JavaScript 1.6に 、配列を検索するArrayオブジェクトのindexOfメソッドがありますが、このメソッドはInternet Explorerではサポートされていません。 IEの場合、このメソッドは配列をループすることで実装されます。
しかし、要素の順序は重要ではなく、1ミリ秒ごとにカウントされていたため、配列内のループ列挙のパフォーマンスを他の検索オプション(列挙なし)と比較しました。

また、検索なしの検索オプションは次のとおりです。
  1. 配列を文字列に接着して文字列を検索する
    if (myarray.join().search( " " ) != -1) { ... }

    * This source code was highlighted with Source Code Highlighter .

    この方法を使用する場合、配列から接着された文字列内の検索部分文字列の出現の一意性を考慮する必要があります。 これを行うには、たとえば、文字列にアプリオリではない接着文字を使用できます。
    if (("#" + myarray.join("#,#") + "#").search( "# #" ) != -1) { ... }

    * This source code was highlighted with Source Code Highlighter .


  2. 配列の代わりにオブジェクトを使用する「ハッシュキー」はハッシュキーです
    if ( " " in myarray) { ... }

    * This source code was highlighted with Source Code Highlighter .


3つの検索方法のそれぞれのパフォーマンスを評価するために、「StringN」という形式の100,000行が作成されるテストページを作成しました。ここで、Nは行番号で、次に「String60000」という文字列が検索されます。
IE6でもin演算子はほぼ瞬時に動作することが判明しました(ランタイムは常に0です)!

テスト結果(Celeron 2.4)


ブラウザString.searchArray.indexOf
IE6ゼロ942859
IE7ゼロ125390
Ff2ゼロ2016年31
Ff3ゼロ713
O9ゼロ28147
Safari3ゼロ18831

検索時間(ミリ秒)。


Source: https://habr.com/ru/post/J46787/


All Articles