2

配列内の一意の文字列を取得するための最適な方法は何ですか?多くの方法の1つを実行することが理にかなっている場合があります、ここに3があります。

  1. 配列を作成し、プッシュする新しいアイテムごとに、最初に次のことを確認します。_.indexOf(array, newItem) == -1
  2. true、などのすべての値を使用してハッシュを作成します{key1: true, key2: true}_.keys(hash)
  3. 配列内のすべてのアイテムをプッシュしてから実行するkeys = _.uniq(keys)

上記のコードはunderscore.jsヘルパーを使用しています。

JavaScriptコンストラクト/vmの内部に関する知識と、いくつかの正式なアルゴリズムに関する知識があると、おそらくこれは簡単なことですが、私はまだそこにいません。ブラウザごとに(そしてノードごとに)異なると思いますが、おそらく好ましいアプローチがあります。何か案は?

4

1 に答える 1

6

最初の解決策は、配列の各要素について、配列のすべての要素をループする必要があります。それはの複雑さを作りますO(n²)

2つ目は、配列をループするだけで、次にキーをループするため、おそらく最良です。それは基本的O(2n)に、それはただO(n)です。

3つ目は、効率によって異なりますuniq()。たとえば、メソッド2の実装にすぎない可能性があります。

于 2012-07-08T01:31:45.887 に答える