Oh MyUtils

リスト比較 - 2つのリストを比較・差分検出 オンライン

2つのリストを比較して一意の項目、重複、積集合、和集合を集合演算で検出 — 100%クライアントサイド処理。

大文字小文字を区別
空白を除去
空行を除去
並び替え
リスト A
リスト B
Aのみ

項目が見つかりません

よくある質問

リスト比較ツールとは何ですか?なぜ必要ですか?

リスト比較ツールは、2つのリストの項目を取り、差異、共通要素、結合結果を見つけるための集合演算を実行するツールです。メール購読者リストの比較、データベース移行の検証、サーバー設定の監査などのデータ照合タスクに不可欠です。

このリスト比較ツールの使い方は?

リストAとリストBのテキストエリアに、1行に1つずつ項目を入力してください。ツールは入力に応じてリアルタイムで自動比較します。結果はタブで整理されます:Aのみ、Bのみ、積集合、和集合、対称差。

データは安全ですか?リストはサーバーにアップロードされますか?

データは100%安全で、ブラウザの外に出ることはありません。すべての比較操作はブラウザ内でJavaScriptを使用してクライアント側で実行されます。データはサーバーに送信されず、保存もされません。

差集合と対称差の違いは何ですか?

差集合(A - B)はリストAにあってリストBにない項目を提供します。方向性があります。対称差(A XOR B)はいずれかのリストにあるが両方にはない項目すべてを提供します。

大文字小文字の区別は比較にどう影響しますか?

大文字小文字の区別が有効な場合(デフォルト)、Appleとappleは異なる項目として扱われます。無効にすると、同じ項目として扱われます。

統計に表示されるJaccard類似度指数とは何ですか?

Jaccard指数は2つの集合がどれだけ類似しているかを測定します。積集合のサイズを和集合のサイズで割って計算します。0は共通項目がないことを、1(100%)はリストが同一であることを意味します。

ツールは単一リスト内の重複をどう処理しますか?

ツールは各リスト内の重複を検出し、重複Aと重複Bのタブに出現回数とともに表示します。集合演算では、各一意の項目は出現回数に関係なく1回だけカウントされます。

このツールは非常に大きなリストを処理できますか?

はい。ツールは最新のブラウザで高度に最適化されたJavaScript Set演算を使用します。最大100,000項目のリストを500ミリ秒以内に比較できます。

コード例

// List comparison using JavaScript Set operations
function compareLists(listA, listB, options = {}) {
  const { caseSensitive = true, trimWhitespace = true } = options;

  const normalize = (item) => {
    let result = item;
    if (trimWhitespace) result = result.trim();
    if (!caseSensitive) result = result.toLowerCase();
    return result;
  };

  const itemsA = listA.map(normalize).filter(Boolean);
  const itemsB = listB.map(normalize).filter(Boolean);

  const setA = new Set(itemsA);
  const setB = new Set(itemsB);

  const onlyInA = [...setA].filter((item) => !setB.has(item));
  const onlyInB = [...setB].filter((item) => !setA.has(item));
  const intersection = [...setA].filter((item) => setB.has(item));
  const union = [...new Set([...setA, ...setB])];
  const symmetricDiff = [...onlyInA, ...onlyInB];

  const jaccardIndex = union.length > 0
    ? intersection.length / union.length : 0;

  return { onlyInA, onlyInB, intersection, union, symmetricDiff,
    stats: { jaccardIndex: Math.round(jaccardIndex * 1000) / 1000 } };
}

// Usage
const a = ['apple', 'banana', 'cherry', 'date'];
const b = ['banana', 'date', 'elderberry', 'fig'];
const result = compareLists(a, b);
console.log('Only in A:', result.onlyInA);
// ['apple', 'cherry']
console.log('Intersection:', result.intersection);
// ['banana', 'date']

関連ツール