5

ユーザーがJavaScriptプログラムに入力するすべてのものをチェックしたい文字列のホワイトリストがある場合、それを行うための最も効率的な方法は何ですか?配列を作成して、一致するものが見つかるまでループすることもできますが、それはO(N)です。その値が存在するかどうかを確認するだけで、より優れた、キー値のルックアップを必要としない、それを行うための方法はありますか?

編集:私が探しているのは、C ++のセットに相当するものだと思います。ここでは、指定された値がセットにすでに存在するかどうかを確認できます。

4

3 に答える 3

1

配列をソートし、ルックアップに二分探索を使用します。

または

キーがアイテムであるオブジェクトを作成し、ハッシュルックアップ whitelist[value] != undefined を使用します

于 2013-03-21T18:47:50.840 に答える
1

キーと値のルックアップのパフォーマンスは、値のないある種のセットの実装とほぼ同じであることがわかると思います。(多くの標準ライブラリは、実際にはマップを使用してセットを実装するだけです)

于 2013-03-21T18:48:12.687 に答える
1

配列ではなく単純な js オブジェクトにするだけです。

var whitelist = {
  "string1":true,
  "string2":true
}

そして、それがif(whitelist[str])利用可能かどうかを確認するだけです。

または使用しますif(str in whitelist)

前者の方がパフォーマンスがわずかに優れていると思いますが (検証していません)、後者の方が読みやすく、目的が明確になります。したがって、どちらがより適しているかを選択できます。

于 2013-03-21T18:48:53.000 に答える