Javascript で集合差分を計算するための効率的で洗練されたテクニックは何ですか?

Mary-Kate Olsen
リリース: 2024-10-21 10:49:02
オリジナル
965 人が閲覧しました

What are the Efficient and Elegant Techniques for Set Difference Computation in Javascript?

JavaScript での効率的かつエレガントな集合差の計算

JavaScript で集合演算を扱う場合、集合を計算する効率的かつエレガントな方法を見つける違い(A - B)は一般的な課題です。いくつかの方法を見てみましょう。

ネイティブ関数のアプローチ

1 つの簡単な解決策は、ネイティブ Javascript 関数を利用することです。

<code class="javascript">var A = [1, 2, 3, 4];
var B = [1, 3, 4, 7];

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

console.log(diff); // [2]
ログイン後にコピー

ここでは、フィルター関数を使用します。配列 A を反復処理し、indexOf 操作を使用して各要素が B に存在するかどうかを確認します。見つからない場合、要素は差分配列 diff に追加されます。

連結と並べ替えのトリック

別のアプローチでは、JavaScript の連結と並べ替えの動作を利用します。

<code class="javascript">var A = [1, 2, 3, 4];
var B = [1, 3, 4, 7];

A = A.concat(B).sort().filter((v, i, a) => a[i] !== a[i + 1]);

console.log(A); // [2, 7]</code>
ログイン後にコピー

両方の配列を連結して並べ替えることにより、一意の要素の順序付きリストが得られます。連続する重複をフィルタリングすることで、設定された差異が得られます。

オブジェクトベースのアプローチ

ハッシュマップのようなオブジェクトを利用して両方の配列の一意の要素を格納すると、効率的なソリューションが得られます。

<code class="javascript">var A = [1, 2, 3, 4];
var B = [1, 3, 4, 7];

var setA = {};
A.forEach(function(x) { setA[x] = true; });

var setDiff = {};
B.forEach(function(x) { setDiff[x] = true; });

Object.keys(setA).forEach(function(x) {
  if (!setDiff[x]) {
    setDiff[x] = true;
  }
});

var diff = Object.keys(setDiff);

console.log(diff); // [2, 7]</code>
ログイン後にコピー

このアプローチでは、オブジェクトをハッシュマップとして使用して、両方の配列内の要素を追跡し、差分を効率的に計算します。

これらのメソッドは、効率と優雅さの点でさまざまなトレードオフを提供します。特定の要件に最も適したものを選択してください。

以上がJavascript で集合差分を計算するための効率的で洗練されたテクニックは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!