1. ホーム
  2. javascript

[解決済み] Javascriptの配列を使って、集合の差を計算する最も速い方法、あるいは最もエレガントな方法は何でしょうか?

2022-05-14 06:22:49

質問

質問 A とし B は2つのセットである。私が探しているのは 本当に を計算する高速でエレガントな方法を探しています。 A - B または A \B といった具合に、好みに応じて使い分けることができます。この2つのセットは、タイトルにあるように、Javascriptの配列として保存され、操作されます。

注意事項

  • ヤモリ特有の仕掛けがあってもOK
  • ネイティブ関数にこだわりたい (ただし、軽量なライブラリの方がずっと速い場合は歓迎)
  • 見たことはあるが、テストはしていない。 JS.Set (前の点を参照)

編集します。 重複する要素を含む集合についてのコメントに気づきました。私が「集合」と言ったとき、私は数学的な定義に言及しています。それは、(とりわけ)重複する要素を含まないことを意味します。

どのように解決するのですか?

これが最も効果的かどうかはわかりませんが、おそらく最も短い方法でしょう。

A = [1, 2, 3, 4];
B = [1, 3, 4, 7];

diff = A.filter(function(x) { return B.indexOf(x) < 0 })

console.log(diff);

ES6に更新しました。

A = [1, 2, 3, 4];
B = [1, 3, 4, 7];

diff = A.filter(x => !B.includes(x) );

console.log(diff);