JavaScript 1.6には 、配列を検索するArrayオブジェクトのindexOfメソッドがありますが、このメソッドはInternet Explorerではサポートされていません。 IEの場合、このメソッドは配列をループすることで実装されます。
しかし、要素の順序は重要ではなく、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 .
- 配列の代わりにオブジェクトを使用する「ハッシュキー」はハッシュキーです
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.search | Array.indexOf |
---|---|---|---|
IE6 | ゼロ | 94 | 2859 |
IE7 | ゼロ | 125 | 390 |
Ff2 | ゼロ | 2016年 | 31 |
Ff3 | ゼロ | 71 | 3 |
O9 | ゼロ | 281 | 47 |
Safari3 | ゼロ | 188 | 31 |
検索時間(ミリ秒)。